我正在做一个关于围棋语言的游览,我有一个关于指针的问题。
示例代码 (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,但我试图删除*和&,它工作正常。为什么他们在此示例中使用指针?与正态变量有什么区别?何时应使用指针?
UYOU
红颜莎娜
相关分类