分配和初始化 Go 結構對於新手來說可能很棘手。考慮這個範例:
此程式碼將因 nil 指標異常而崩潰,因為 lock 和 hm 未初始化。
要解決此問題,可以使用以下解決方法:
但這增加了不必要的樣板。
更簡潔的方法是使用建構子來初始化結構。建構函數是傳回結構的初始化實例的函數。例如:
此建構函式初始化 hm 字段,並傳回指向新建立的 SyncMap 實例的指標。
現在,程式碼正確初始化結構體,無需任何樣板.
構造函數模式還可以用於初始化多個字段、啟動 goroutine 或為結構註冊終結器。例如:
這個構造函數初始化 hm 和 foo 字段,為 backend() 啟動一個 goroutine,並註冊一個終結器以在 SyncMap 實例被垃圾收集時運行 stop() 方法。
以上是建構函式模式如何解決Go結構體初始化問題?的詳細內容。更多資訊請關注PHP中文網其他相關文章!