我有以下结构:type Foo struct { Bar *FooBar Baz *FooBaz}type FooBar struct { Name string}type FooBaz struct { Name string}未设置时,如何在没有得到nil指针引用的情况下访问结构中的Bazand Bar?我想要类似下面的内容,但是我不断收到nil指针解除引用错误。if Foo.Bar == nil { throw error}我为此而苦苦挣扎!
2 回答
婷婷同学_
TA贡献1844条经验 获得超8个赞
您应该可以将其与nil进行比较,这是一个有效的示例:
check := func(f Foo) {
if f.Bar == nil {
panic("oops!")
}
fmt.Println("OK")
}
foo1 := Foo{Bar: &FooBar{"Alpha"}}
check(foo1) // OK
foo2 := Foo{}
check(foo2) // panic: oops!
请注意,如果您要修改“ check”函数以接受a,*Foo并且使用nil指针调用该函数,则该函数本身将因“ nil指针取消引用运行时错误”而感到恐慌。这可能就是您的示例当前正在发生的情况。
- 2 回答
- 0 关注
- 252 浏览
添加回答
举报
0/150
提交
取消