在Go 結構體中初始化映射的最佳實踐
創建包含映射字段的結構體時,編譯器將其默認為nil,即在沒有正確初始化的情況下存取地圖時可能會導致運行時錯誤。有幾種方法可以有效地解決這種初始化需求。
建構子
一個建議的方法是專門為結構實作建構子。此函數負責在結構體建立時初始化映射字段,確保映射永遠不會為零。
範例:
func NewGraph() *Graph { var g Graph g.connections = make(map[Vertex][]Vertex) return &g }
有初始化檢查的方法
另一個選項是在結構體中建立一個方法來加入與地圖的連接。此方法應首先檢查映射是否為零,如果是,則在執行任何進一步操作之前對其進行初始化。
範例:
func (g *Graph) AddConnection(v1, v2 Vertex) { if g.connections == nil { g.connections = make(map[Vertex][]Vertex) } g.connections[v1] = append(g.connections[v1], v2) g.connections[v2] = append(g.connections[v2], v1) }
結構體定義中的明確映射初始化
在某些情況下,在結構定義本身內顯式初始化映射可能是可以接受的。當映射不可變或其值在編譯時已知時,此方法非常有用。
範例:
type Graph struct { connections map[Vertex][]Vertex }
以上是如何在 Go 結構體欄位中最好地初始化映射?的詳細內容。更多資訊請關注PHP中文網其他相關文章!