type MyStruct struct {
IsEnabled *bool
}
如何更改* IsEnabled = true
的值这些都不起作用:
*(MyStruct.IsEnabled) = true
*MyStruct.IsEnabled = true
MyStruct.*IsEnabled = true
答案 0 :(得分:6)
您可以通过将true存储在内存位置然后访问它来执行此操作,如下所示:
type MyStruct struct {
IsEnabled *bool
}
func main() {
fmt.Println("Hello, playground")
t := true // Save "true" in memory
m := MyStruct{&t} // Reference the location of "true"
fmt.Println(*m.IsEnabled) // Prints: true
}
来自docs:
布尔值,数字和字符串类型的命名实例 预声明。复合类型 - 数组,结构,指针,函数, 接口,切片,映射和通道类型 - 可以使用类型构造 文字。
由于布尔值是预先声明的,因此您无法通过复合文字创建它们(它们不是复合类型)。类型bool
有两个const
值true
和false
。这排除了以这种方式创建文字布尔值:b := &bool{true}
或类似的。
应该注意的是,将{bool设置为false
要容易得多,因为new()
会将bool初始化为该值。因此:
m.IsEnabled = new(bool)
fmt.Println(*m.IsEnabled) // False