登录
首页 >  Golang >  Go问答

Golang继承中的段错误

来源:stackoverflow

时间:2024-03-06 13:00:28 100浏览 收藏

学习Golang要努力,但是不要急!今天的这篇文章《Golang继承中的段错误》将会介绍到等等知识点,如果你想深入学习Golang,可以关注我!我会持续更新相关文章的,希望对大家都能有所帮助!

问题内容

有人可以帮我理解为什么会这样吗?我假设函数的继承仍然适用于 nil 对象。如果可能的话,我希望让孩子能够使用与指针相同的 bar 函数。

import "fmt"

type foo struct{}

func (this *foo) bar() string {

    if this == nil {
        return "I'm nil"
    }
    return "I'm NOT nil"

}

type child struct {
    foo // inheret

}

func main() {
    var obj *foo
    fmt.Println(obj.bar()) // this works

    var childObj *child
    fmt.Println(childObj.bar()) // this seg faults
}

这里还有演示的链接。


正确答案


使用 Go 时,请务必注意嵌入 != 继承。如果你想使用嵌入来代替继承,要了解两者之间的区别。

您可以在 Effective Go 中找到有关两者之间差异的一些信息。

但是,用我自己的话说,这就是您的示例中发生的情况:

编写 childObj.bar() 相当于编写 childObj.foo.bar() (访问 childObjfoo 字段,然后调用其方法 bar())。因为 childObjnil,所以尝试取消引用它来访问字段 foo 将出现 nil 指针错误。

今天关于《Golang继承中的段错误》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>