在下面的测试代码中,我希望将 mytype
和 doPrivate
方法设为私有,以便只有 mytype
的成员可以访问它,但其他类型不能访问它\functions 在 mypackage
包的范围内。
我可以在 golang 中这样做吗?
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")
}
应封装字段 size
和 hash
以及 doPrivate
方法,其他类型不应访问它们。
原文由 andrew.fox 发布,翻译遵循 CC BY-SA 4.0 许可协议
这不是“隐私”在 Go 中的工作方式:隐私的粒度是包。
如果您 真的 只希望
mytype
的成员访问某些字段,那么您必须将结构和函数隔离在它们自己的包中。但这不是通常的做法。 Go 是否是 OOP 是值得商榷的,但很明显,实践并不是像你想做的那样用结构封装代码。通常一个包足够小以保持连贯:如果您不想访问包内的字段,请不要访问它们。