在结构中引用布尔值进行赋值

type MyStruct struct {


    IsEnabled *bool

}

如何更改 *IsEnabled = true 的值


这些都不起作用:


*(MyStruct.IsEnabled) = true

*MyStruct.IsEnabled = true

MyStruct.*IsEnabled = true


墨色风雨
浏览 170回答 1
1回答

暮色呼如

您可以通过将 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}从文档:布尔、数字和字符串类型的命名实例是预先声明的。复合类型——数组、结构、指针、函数、接口、切片、映射和通道类型——可以使用类型文字构造。由于布尔值是预先声明的,您不能通过复合文字创建它们(它们不是复合类型)。该类型bool有两个const值true和false。这排除了以这种方式创建文字布尔值:b := &bool{true}或类似的。应该注意的是,将 *bool 设置为要false容易一些,因为new()会将 bool 初始化为该值。因此:m.IsEnabled = new(bool)fmt.Println(*m.IsEnabled) // False
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go