Go 语言源码的组织方式就是以环境变量 GOPATH、工作区、src 目录和代码包为主线的。一般情况下,Go 语言的源码文件都需要被存放在环境变量 GOPATH 包含的某个工作区(目录)中的 src 目录下的某个代码包(目录)中
在安装后如果产生了归档文件(以“.a”为扩展名的文件),就会放进该工作区的 pkg子目录;如果产生了可执行文件,就可能会放进该工作区的 bin 子目录
在go mod模式下源码可以放在任意地方,go mod依赖包会先下载到pkg目录,保存为cach文件再解压,以包名+版本号进行版本区分,如[email protected]
接受其他函数作为参数传入,或者把其他函数作为结果进行返回的函数,可以在不修改函数本身的情况下对传入的函数进行修饰
闭包可以理解为有状态的匿名函数,返回的函数中保存着不同的状态
闭包的价值在于保护函数内的变量,同时给予函数保存外部变量的能力
编译时期的数组由NewArray函数生成,该类型包含两个字段,分别是元素类型 Elem
和数组的大小 Bound
,这两个字段共同构成了数组类型
func NewArray(elem *Type, bound int64) *Type {
if bound < 0 {
Fatalf("NewArray: invalid bound %v", bound)
}
t := New(TARRAY)
t.Extra = &Array{Elem: elem, Bound: bound}
t.SetNotInHeap(elem.NotInHeap())
return t
}