pointers - 为什么我的自定义错误类型会导致特定模式的错误?

标签 pointers go error-handling

<分区>

我正在为 go 的接收器和指针而苦苦挣扎。 我发现第 4 种模式会导致错误。 为什么这种模式会导致错误,有什么区别? 提前致谢。

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{}
}

最佳答案

Go 会自动为您取消引用一个指针(模式 2),但它不会自动为您引用一个指针。参见 https://golang.org/ref/spec#Method_values获取更多信息。

关于pointers - 为什么我的自定义错误类型会导致特定模式的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53830404/

相关文章:

c++ - 在 header 中使用 & 将变量传递给函数

go - 如何正确检查 io.Reader 是否为零?

c - 同时处理两个字符串时的strtok

c# - 如何解码包含UTF-8字节顺序标记(BOM)的JSON字符串?

json - "google/protobuf/struct.proto"是通过 GRPC 发送动态 JSON 的最佳方式吗?

linux - Bash 退出状态在脚本中不起作用

c# - 处理错误 "WebDev.WebServer.Exe has stopped working"

c - 在 C : Is void* a type?

interface - Go Interfaces 使用定义中的接口(interface)

python - 什么时候应该在 Python 中使用 Try-Except 语句?