在 Go 结构体文字中将 True 分配给 Bool 指针
Go 程序员经常遇到需要在结构体文字中将 bool 指针设置为 true 的情况。本文深入研究了在不定义新标识符的情况下实现此目标的可用选项。
提供的代码片段展示了一个采用 bool 指针的函数,提示是否存在允许 is 字段的构造的问题在结构体本身中设置为 true。
设置方法正确:
1。数组索引(并非最佳):
h := handler{is: &[]bool{true}[0]}
此方法涉及创建一个将单个 bool 设置为 true 的数组,为其建立索引,并分配索引元素的地址。虽然它不需要额外的变量,但样板文件和内存消耗是缺点。
2.带指针返回的辅助函数:
func newTrue() *bool { b := true return &b }
此方法引入了一个返回 true bool 变量地址的辅助函数。它的使用方式如下:
h := handler{is: newTrue()}
这提供了一个更干净且可定制的解决方案。
3.带闭包的匿名函数:
h := handler{is: func() *bool { b := true; return &b }()}
匿名函数技术使用闭包来提供所需的功能。
4.带闭包的函数式选项:
h := handler{is: func(b bool) *bool { return &b }(true)}
此选项提供了一种函数式编程方法,其中 bool 值作为参数传递。
最佳解决方案:
大多数情况下的最佳解决方案是使用像 newTrue() 这样的辅助函数,因为它提供了简洁和在结构体中将 bool 指针设置为 true 的可重用方法。
以上是如何在不定义额外变量的情况下将'true”分配给 Go 结构体中的'bool”指针?的详细内容。更多信息请关注PHP中文网其他相关文章!