首页 > 后端开发 > Golang > 如何在 Go 结构体文字中有效地将布尔指针设置为 True?

如何在 Go 结构体文字中有效地将布尔指针设置为 True?

DDD
发布: 2024-12-02 09:21:12
原创
156 人浏览过

How Can I Efficiently Set a Bool Pointer to True within a Go Struct Literal?

在结构体中设置 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板