【发布时间】:2021-06-28 20:28:09
【问题描述】:
我正在游览go语言,我有一个关于指针的问题。
示例代码(https://tour.golang.org/methods/19):
package main
import (
"fmt"
"time"
)
type MyError struct {
When time.Time
What string
}
func (e *MyError) Error() string {
return fmt.Sprintf("at %v, %s",
e.When, e.What)
}
func run() error {
return &MyError{
time.Now(),
"it didn't work",
}
}
func main() {
if err := run(); err != nil {
fmt.Println(err)
}
}
在这种情况下,它使用 *MyError 和 &MyError,但我尝试删除 * 和 & 并且它可以正常工作。为什么他们在这个例子中使用指针?与正常变量有什么区别?什么时候应该使用指针?
【问题讨论】:
标签: go