首页 > 后端开发 > Golang > 如何在 Go 中创建不可变结构?

如何在 Go 中创建不可变结构?

Patricia Arquette
发布: 2024-12-04 17:33:17
原创
917 人浏览过

How to Create Immutable Structs in Go?

在 Go 中创建不可变结构

不可变结构一旦初始化,只允许对其字段进行读取操作,而无法修改。在 Go 中实现这一点需要与其他语言稍有不同的方法。

解决方案

在 Go 中创建不可变结构:

  1. 使用未导出的字段名称:使结构体的字段不导出他们的名字以小写字母开头。这限制了对结构体包外部字段的访问。
  2. 提供读取器函数:在结构内创建读取器函数以允许访问未导出的字段。这些函数通常返回字段值的副本。

示例代码

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板