首頁 > 後端開發 > Golang > 如何在 Go 結構體文字中將 True 指派給布林指標?

如何在 Go 結構體文字中將 True 指派給布林指標?

Susan Sarandon
發布: 2024-12-08 10:49:10
原創
941 人瀏覽過

How to Assign True to a Bool Pointer in Go Struct Literals?

結構體文字中的指標賦值:簡明指南

在 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
登入後複製

匿名函數和One-Liners

將指標設為 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板