为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
墨色风雨 2021-11-01 17:31:15
type MyStruct struct {    IsEnabled *bool}如何更改 *IsEnabled = true 的值这些都不起作用:*(MyStruct.IsEnabled) = true*MyStruct.IsEnabled = trueMyStruct.*IsEnabled = true
查看完整描述

1 回答

?
暮色呼如

TA贡献1853条经验 获得超9个赞

您可以通过将 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


查看完整回答
反对 回复 2021-11-01
  • 1 回答
  • 0 关注
  • 169 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信