为了账号安全,请及时绑定邮箱和手机立即绑定

验证是否在struct golang中设置了该字段

验证是否在struct golang中设置了该字段

Go
有只小跳蛙 2021-04-08 22:19:01
我有以下结构: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指针取消引用运行时错误”而感到恐慌。这可能就是您的示例当前正在发生的情况。


查看完整回答
反对 回复 2021-04-19
  • 2 回答
  • 0 关注
  • 238 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信