接口可以看作是一种对象的行为集合,一系列函数的集合;
要实现一个接口,需要实现该接口中的所有方法;
实现接口是非侵入式的,去掉复杂继承体系。
go查找路径默认从GOPATH目录下的src下去找
包的package可以自定义
如果需要函数或变量名让其他包使用,首字母必须大写
第一行我们定义了一个名为 package 的包,main是可执行程序的包名,所有的Go源程序文件头部必须有一个包声明语句。
然后用 关键字 import 导入了一个“fmt”文件,fmt 是 format 的缩写,是一个标准的包,有点类似C语言中的头文件。
关键字 func 声明定义了一个函数, 函数名为main, 在Go语言中 main 代表一个程序的入口,没有 main 函数的程序就像与一间没有没有门的密室,在C语言中也是如此。
main函数里面调用了 fmt 包里的 Println 函数
slice扩容
- 如果切片的容量小于1024个元素,那么扩容的时候slice的cap就翻番,乘以2;一旦元素个数超过1024个元素,增长因子就变成1.25,即每次增加原来容量的四分之一。
- 如果扩容之后,还没有触及原数组的容量,那么,切片中的指针指向的位置,就还是原数组,如果扩容之后,超过了原数组的容量,那么,Go就会开辟一块新的内存,把原来的值拷贝过来,这种情况丝毫不会影响到原数组