在 Go 中创建不可变结构
不可变结构一旦初始化,只允许对其字段进行读取操作,而无法修改。在 Go 中实现这一点需要与其他语言稍有不同的方法。
解决方案
在 Go 中创建不可变结构:
示例代码
package mypackage type ImmutableStruct struct { value int } func (s ImmutableStruct) Value() int { return s.value } func NewImmutableStruct(value int) ImmutableStruct { return ImmutableStruct{value: value} }
用法
myImmutableStruct := mypackage.NewImmutableStruct(3) fmt.Println(myImmutableStruct.Value()) // Prints 3
在此示例中,ImmutableStruct 具有未导出的字段和一个读取器函数 (Value()) 来访问值字段。一旦初始化,就无法从 mypackage 包外部对其进行修改。
这种技术确保了不变性,同时保持了结构体的灵活性和 Go 包的模块化性。
以上是如何在 Go 中创建不可变结构?的详细内容。更多信息请关注PHP中文网其他相关文章!