gpt4 book ai didi

go - 有没有办法在链式调用中传播变量的 "nilness"?

转载 作者:IT王子 更新时间:2023-10-29 01:26:30 31 4
gpt4 key购买 nike

我在 Go 中有以下内容:

checkItemState := action.Data.CheckItem.State
if checkItemState != "" {
fmt.Printf("checklist item state: %s", action.Data.CheckItem.State)
}

现在,如果链 action.Data.CheckItem 中的任何项为 nil/空,我将收到 nil 指针取消引用错误,这是有道理的。

但是否有一种语言级别的方法来获取 checkItemState(如果不是 nil)或 ""(如果链中的任何项目为 nil/空)。

(我来自虚无主义传播的 Obj-C/Swift 土地)

最佳答案

如果您编写一些 getter,就可以很好地处理这个问题。 Go 方法接收者只是常规的函数参数,所以在 nil 接收者上调用一些东西是完全可以的:

type Foo struct {
Name string
}

func (f *Foo) GetName() string {
if f == nil {
return "default name" // or "", whatever
}
return f.Name
}

https://play.golang.org/p/Q20lSo65Kx

这个技巧用于例如通过 Go protobuf 实现。

关于go - 有没有办法在链式调用中传播变量的 "nilness"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44122034/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com