Допустим, у меня есть структура Go, которая выглядит примерно так (пожалуйста, простите синтаксис для объяснения):
type Foo struct {
MyBar *Bar
}
type Bar struct {
value int
}
func (b* Bar) Bark() {
fmt.Printf("Hello I'm a bar with value: %v", b.value)
}
Теперь, допустим, что эта структура Foo
хранится в памяти для процесса, и для заполнения поля MyBar
требуется некоторое время. Как в, это nil
на некоторое время. Можно ли как-нибудь проверить, сохраняется ли его сохранение для доступа к методу Bark()
во время выполнения, без выполнения nil
проверок вручную?
Например, что-то вроде:
// Early on, this happens:
f := &Foo{}
.
.
.
.
// And later, I wanna see if its safe to do:
if isSafe(b.MyBar) {
b.MyBar.Bar()
}
Причина, по которой я спрашиваю это для глубоко вложенных указателей, может стать довольно болезненной. Есть мысли?