封装
通过命名来实现封装
- 名字一般使用CamelCase
- 首字母大写:public
- 首字母小写:private
相对于 包 而言,若一个外部的包想要访问本包内定义的结构,和 结构的方法(不仅仅是结构,定义的一般方法若想被其他包使用,也是要大写首字母的),这些命名,包括结构内变量的命名都要采用大写。
但是在同一个包下的内容可以随便调用。
1 | package tree |
包
- 每个目录一个包,只能是同一种包
- main包包含可执行入口-- main函数,只有main包才能有main函数
- 为结构定义的方法必须放在同一个包内
- 可以是同一个包内的不同文件,对包外来说,只要知道包名,都可以使用,不需要知道文件名
使用时,import导入的是存放包的目录名,同一个目录下只能有一种包名,用来表示包内文件的关系,以及被其他包使用时的开头 包名.方法或变量
。但是为了不产生歧义,最好使用的时候,包名和目录名设置成一致的即可。
¶如何扩充系统类型或者别人的类型
在含有继承的语言中,可以通过继承的方式来扩充原有的功能,但是在go中是没有继承的概念的。Go采用以下两种方式来扩充:
- 定义别名
- 使用组合
1 | // 使用组合的方式来完成 扩充自定义的treeNode结构,增加后序遍历的功能 |
1 | // 使用别名的方式来完成 扩充[]int切片类型,提供Push、Pop、IsEmpty的功能 |
GOPATH环境变量
- 默认在~/go(Unix,Linux)
- 官方推荐:所有项目和第三方库都放在同一个GOPATH下
- 也可以将每个项目放在不同的GOPATH
- GO在 编译 的时候会自动到每个GOPATN下找到自己所依赖的包
正常情况下 go get golang.org/x/tools/cmd/goimports
使用gopm来获取无法下载的包
go get -v github.com/gpmgo/gopm
- go build 来编译
- go install 产生pkg文件和可执行文件
- go run 直接编译运行
gopath下三个文件夹,bin 放go install的可执行文件, pkg 存放包文件,src 为项目源代码,也是可以使被掉