在Go 中使用不可變結構
在Go 中,你可能會遇到對不可變結構的需求,它可以防止初始化後修改其欄位。這可以增強某些場景下的資料完整性和安全性。
為了實現 Go 中結構的不變性,您可以採用一種技術,使其成員不導出並提供唯讀函數來存取其值。以下是實作此方法的方法:
package mypackage type myImmutable struct { value int } func (s myImmutable) Value() int { return s.value }
在此範例中,myImmutable 結構具有一個非匯出欄位值。為了存取套件外部欄位的值,我們提供了一個 getter 函數 Value()。
可以使用建構子來完成結構體的初始化,該函數建立一個新實例並設定值:
func NewMyImmutable(value int) myImmutable { return myImmutable{value: value} }
不可變結構的用法如下所示:
myImmutable := mypackage.NewMyImmutable(3) fmt.Println(myImmutable.Value()) // Prints 3
透過使用getter 來存取結構體的字段,任何在包外修改它們的嘗試都會導致編譯器錯誤。這種方法有效地使結構不可變。
以上是如何在 Go 中創建不可變結構?的詳細內容。更多資訊請關注PHP中文網其他相關文章!