如何使用Go结构体隐藏信息?Go结构体成员对所有人可见。如何在一个包中隐藏某个成员?
Go不是一种面向对象的语言。但它在包级别上封装了东西。
根据GoLang规范;
标识符可以导出以允许从另一个包中访问它。如果满足以下两个条件,则标识符将被导出:
- 标识符名称的第一个字符是Unicode大写字母(Unicode类“Lu”);并且
- 该标识符在包块中声明,或者它是字段名称或方法名称。
所有其他标识符都未被导出。
如果您不想使结构体变量公开,请不要导出它们。 使用小写字母创建结构类型中的变量。 非导出结构字段仅对同一包可访问。
// unexported struct
type person struct {
name string // unexported fields can be used only in the same package
age int
}
Go语言只允许在包级别上进行粒度控制。可以在不同的包中声明结构体,在需要的文件中使用它们。