首页 > 后端开发 > Golang > 你可以在 Go 包中将结构体字段和方法设为私有吗?

你可以在 Go 包中将结构体字段和方法设为私有吗?

DDD
发布: 2024-11-15 10:10:02
原创
679 人浏览过

Can you make struct fields and methods private in Go packages?

无法为包中的结构体创建私有字段和方法

问题:

是否可以在 Go 包中将结构体的字段和方法设置为私有,仅可由该结构体的成员访问,而不能由其他包函数或外部代码访问?

Context:

考虑以下代码片段:

package mypackage

type mytype struct {
    size          string
    hash          uint32
}

func (r *mytype) doPrivate() string {
    return r.size
}

func (r *mytype) Do() string {
    return doPrivate("dsdsd")
}
登录后复制

在这种情况下,大小和哈希字段以及 doPrivate 方法应该封装在 mytype 中,其他类型无法访问。

答案:

虽然 Go 允许根据大小写导出或隐藏标识符,但 Go 中不存在私有类成员或数据隐藏的概念。

按照惯例,导出的标识符(以大写字母开头)旨在供包内的公共使用。相反,未导出的标识符(以小写字母初始化)在该包内的访问受到限制。

但是,在给定的包内,无法进一步限制对该包范围之外的结构成员的访问。为了实现数据封装,建议的方法是创建一个单独的包,其中整个结构及其关联方法是该包中定义的唯一元素。

以上是你可以在 Go 包中将结构体字段和方法设为私有吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

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