一个让我怀疑人生的事实

使用Golang编程已经差不多有一年的时间了,今天才知道,原来结构体的属性首字母小写,可以在结构体外访问,WTF!

我看的所有的教程和文章中,在介绍Golang变量名、函数名、属性名大小写的时候都是说,首字母大写是公共权限,小写是私有权限。而我一直按照C/C++的公有私有的概念去理解,就导致我一直以为小写的属性在结构体外部不能访问。直到我看到别人写的一句外部访问小写字母开头的属性,一开始我还以为他写错了。试了一下之后发现确实可以。再回头去看教程。大写字母开头的包外可以访问,小写字母开头的包外不能访问。原来Golang和C/C++的私有共有的局限范围不一样啊。因为C/C++全都是依赖头文件引入程序,没有包的概念,私有共有只能按照作用域判断。但是Golang有包的概念,直接按照包去划分就好了。这显然是更合理的。