在 Go 中,為結構體文字中的指標賦值可能很棘手。具體來說,將 bool 指標設為 true 可能需要解決方法。
考慮以下接受bool 指標的函數:
import "fmt" func main() { fmt.Println("Hello, playground") check(handler{is: new(bool)}) } type handler struct{ is *bool } func check(is handler){}
要將結構體文字中的is 欄位指派為true,人們可能會假設存在一個簡單的符號:
handler{is: &true} // This is invalid
不幸的是,這不是有效的Go 語法。要將 bool 指標設為 true,需要解決方法。
一種方法是建立一個包含單一bool 值true 的切片並索引其第一個元素:
h := handler{is: &[]bool{true}[0]} fmt.Println(*h.is) // Prints true
雖然這允許您將指標設為true,但它不必要地建立一個切片數組,該數組將保留在記憶體中,直到地址到達它的第一個元素被刪除。
更簡潔的解決方案是建立一個輔助函數,該函數傳回指向初始化為 true 的 bool 變數的指標:
func newTrue() *bool { b := true return &b }
然後可以在結構體中使用此函數:
h := handler{is: newTrue()} fmt.Println(*h.is) // Prints true
將指標設為 true的其他選項包括匿名函數:
h := handler{is: func() *bool { b := true; return &b }()} fmt.Println(*h.is) // Prints true
或變體:
h := handler{is: func(b bool) *bool { return &b }(true)}
這些允許簡潔的語法,但可以比輔助函數方法可讀性較差。
設定 bool 時在結構體中指向 true 的指標可能看起來像是一個簡單的任務,它需要特定的語法或使用解決方法。了解這些方法可以讓 Go 程式設計師在各種情況下有效地為指標賦值。
以上是如何在 Go 結構體文字中將 True 指派給布林指標?的詳細內容。更多資訊請關注PHP中文網其他相關文章!