本文初始化于 2019-11-11 02:12:12,深夜开启学习 golang 的道路。
go 是静态类型的语言,入门推荐Go 编程语言指南
还有一个极客时间的课程示例代码
GOROOT GOPATH
- GOROOT:Go 语言安装根目录的路径,也就是 GO 语言的安装路径。
- GOPATH:若干工作区目录的路径。是我们自己定义的工作空间。 官方解释
- GOBIN:GO 程序生成的可执行文件(executable file)的路径。
命令源码文件
命令源码文件的用途是什么,怎样编写它?
命令源码文件是程序的运行入口,是每个可独立运行的程序必须拥有的。我们可以通过构建或安装,生成与其对应的可执行文件,后者一般会与该命令源码文件的直接父目录同名。
如果一个源码文件声明属于main包,并且包含一个无参数声明且无结果声明的main函数,那么它就是命令源码文件。
在同一个目录下的源码文件都需要被声明为属于同一个代码包。源码文件声明的包名可以与其所在目录的名称不同,只要这些文件声明的包名一致就可以。
库源码文件
库源码文件是不能被直接运行的源码文件,它仅用于存放程序实体,这些程序实体可以被其他代码使用(只要遵从 Go 语言规范的话)。
第一条规则,同目录下的源码文件的代码包声明语句要一致。也就是说,它们要同属于一个代码包。这对于所有源码文件都是适用的。如果目录中有命令源码文件,那么其他种类的源码文件也应该声明属于main包。这也是我们能够成功构建和运行它们的前提。
第二条规则,源码文件声明的代码包的名称可以与其所在的目录的名称不同。在针对代码包进行构建时,生成的结果文件的主名称与其父目录的名称一致。对于命令源码文件而言,构建生成的可执行文件的主名称会与其父目录的名称相同。
数组 array
数组是连续存储在内存中的,每一个切片的底层实现都是绑定着一个数组。当切面的值改变时,底层数组也会跟着改变。当切片的 capacity 增大超过当前数组长度时,go 会自动产生一个新的底层数组,长度为以前的 2 倍,然后再绑定到切片上。当切片 capacity 大于 1000 时,底层数组的增长因子就会有 2 变为 1.25。数组的容量永远等于其长度,都是不可变的。
切片 slice
Go 语言的切片类型属于引用类型,同属引用类型的还有字典类型、通道类型、函数类型等;而 Go 语言的数组类型则属于值类型,同属值类型的有基础数据类型以及结构体类型。
注意,Go 语言里不存在像 Java 等编程语言中令人困惑的“传值或传引用”问题。在 Go 语言中,我们判断所谓的“传值”或者“传引用”只要看被传递的值的类型就好了。
如果传递的值是引用类型的,那么就是“传引用”。如果传递的值是值类型的,那么就是“传值”。从传递成本的角度讲,引用类型的值往往要比值类型的值低很多。
我们在数组和切片之上都可以应用索引表达式,得到的都会是某个元素。我们在它们之上也都可以应用切片表达式,也都会得到一个新的切片。切片的容量却不是这样,并且它的变化是有规律可寻的。用make函数初始化切片时,如果不指明其容量,那么它就会和长度一致。如果在初始化时指明了容量,那么切片的实际容量也就是它了。 切片代表的窗口是无法向左扩展的。
slice := make([]int, len, cap)
Go 语言经典知识总结
1 |
基于混合线程的并发编程模型自然不必多说。 |
近期评论