在结构体中设置 Bool 指针
在 Go 中,当将指向 bool 的指针传递给函数时,可以设置直接获取结构体中 bool 字段的值。然而,标准语法需要定义一个新的标识符,如下所示:
func check(is handler){} type handler struct{ is *bool } func main() { var x bool = true check(handler{is: &x}) }
要规避此要求并直接在结构体中将 bool 指针设置为 true,有几种方法:
选项 1:使用切片
此方法创建一个具有单个 bool 值 true、indexes 的切片它的第一个元素,并获取其地址:
h := handler{is: &[]bool{true}[0]}
虽然这种技术避免了定义新变量,但它引入了不必要的样板并在内存中留下了后备数组。
选项 2 : 使用辅助函数
更优化的解决方案是创建一个辅助函数,生成一个带有 true 的 bool 指针value:
func newTrue() *bool { b := true return &b }
使用此函数,在结构体中设置 bool 指针变为:
h := handler{is: newTrue()}
选项 3:使用单行匿名函数
另一种方法涉及使用匿名函数在单个函数中完成相同的任务line:
h := handler{is: func() *bool { b := true; return &b }()}
选项 4:具有匿名函数的变体
前一种方法的细微变化:
h := handler{is: func(b bool) *bool { return &b }(true)}
这些技术提供在结构体中将 bool 指针设置为 true 的替代方案,无需额外的标识符或不必要的开销。开发者可以选择最适合自己需求和风格偏好的方法。
以上是如何在 Go 结构体文字中有效地将布尔指针设置为 True?的详细内容。更多信息请关注PHP中文网其他相关文章!