登录
首页 >  Golang >  Go问答

是否有工具可以检测导致运行时崩溃的 nil 接口的使用情况?

来源:stackoverflow

时间:2024-04-16 09:39:26 350浏览 收藏

怎么入门Golang编程?需要学习哪些知识点?这是新手们刚接触编程时常见的问题;下面golang学习网就来给大家整理分享一些知识点,希望能够给初学者一些帮助。本篇文章就来介绍《是否有工具可以检测导致运行时崩溃的 nil 接口的使用情况?》,涉及到,有需要的可以收藏一下

问题内容

以下代码会导致 sigsegv 错误。是否有诸如 linter 之类的工具可以标记这种不良逻辑?

package main

// Person is ...
type Person interface {
        M()
}

func main() {
        var i Person
        i.M()
}

golint 没有检测到这一点。


解决方案


因为编译器在编译时不知道底层具体类型 i 有什么。考虑这个例子:

func main() {
        var i Person
        if gender == "woman" {
                i = &Woman{}
        }
        i.M()
}

由于编译器在编译时不知道 gender 的值,因此它也不知道 &woman{} 是否被赋值给 i 还是保留为 person 接口的零值,即 nil

理论要掌握,实操不能落!以上关于《是否有工具可以检测导致运行时崩溃的 nil 接口的使用情况?》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

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