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
- 1 回答
- 0 關注
- 210 瀏覽
添加回答
舉報
0/150
提交
取消