我在为go的接收器和指针苦苦挣扎。 我发现第四个模式会导致错误。 为什么这种模式会导致错误,有什么区别? 预先感谢。
type MyError struct{}
// OK pattern
func (e MyError) Error() string {
return "something bad happened"
}
func run() error {
return MyError{}
}
// OK pattern
func (e MyError) Error() string {
return "something bad happened"
}
func run() error {
return &MyError{}
}
// OK pattern
func (e *MyError) Error() string {
return "something bad happened"
}
func run() error {
return &MyError{}
}
// BAD pattern
func (e *MyError) Error() string {
return "something bad happened"
}
func run() error {
return MyError{}
}
答案 0 :(得分:0)
Go将自动为您取消引用一个指针(模式2),但是不会为您自动引用一个指针。有关更多信息,请参见https://golang.org/ref/spec#Method_values。