可以在Golang中定义一个不变的结构吗?一旦初始化,则只能对struct的字段进行读取操作,而无需修改字段值。如果是这样,该怎么做。
通过使其成员不导出并提供阅读器,可以在其程序包外部将结构设为只读。例如:
package mypackage type myReadOnly struct { value int } func (s myReadOnly) Value() int { return s.value } func NewMyReadonly(value int) myReadOnly{ return myReadOnly{value: value} }
和用法:
myReadonly := mypackage.NewMyReadonly(3) fmt.Println(myReadonly.Value()) // Prints 3