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

我有以下结构:


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

}

我为此而苦苦挣扎!


有只小跳蛙
浏览 253回答 2
2回答

婷婷同学_

您应该可以将其与nil进行比较,这是一个有效的示例:check := func(f Foo) {  if f.Bar == nil {    panic("oops!")  }  fmt.Println("OK")}foo1 := Foo{Bar: &FooBar{"Alpha"}}check(foo1) // OKfoo2 := Foo{}check(foo2) // panic: oops!请注意,如果您要修改“ check”函数以接受a,*Foo并且使用nil指针调用该函数,则该函数本身将因“ nil指针取消引用运行时错误”而感到恐慌。这可能就是您的示例当前正在发生的情况。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go