Table of Contents

关于Go语言设计的思考


我对于package命名规则的理解

在每个go文件的开头,都必须首先写package <name>,指定包名没有问题,我的问题是:

Q:一个路径下的所有go文件属于一个Package(不递归),那直接用这个文件夹的名字作为Package Name不就行了?
A:一般来说,Package Name和文件夹名统一确实比较好,但是有些时候Package Name需要是main,这个时候就和文件夹名称不一样了,所以需要用手动指定Package Name的方式让我们选择是否将Package Name设定为main。

Q:一个Package内部的所有go文件需要使用相同的Package Name,每个文件里面都要写一遍,不麻烦吗?不容易写错吗?
A:上面我们已经分析了,为什么需要手动写明Package Name,那么这个Name写在哪里好呢?如果只想写一遍的话,写在某个特殊命名的文件里(比如package_main.go)?或者写在目录下的某个配置文件里(比如package_config.json)?这两种方式恐怕更加不优雅吧。

Go的代码分发

  1. go的lib分发只涉及代码,当场编译,不涉及二进制,最简单好用
  2. Python的lib还是包含二进制的,并且大部分是其他语言写的
  3. C++约等于没有代码分发的框架,完全的自由

权限控制(大小写)

理智地想一想,确实更简单了(没有权限控制符号),命名更规范了,接受这种受束缚的感觉吧…