这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天
今天只学习了第一课,学了一些基础语法。流水账笔记。
- xx
1.1课件的标题为:“什么是GO语言”,但是只列了8个优点和一段示例代码。对于毫无工程经验的我来说,优点1~7是很吸引人的,优点8更是不明白的,不要紧,不卑不亢,多学多了解。示例代码也不是经典的打印"hello world",原话是“仅用短短十行代码就实现了一个可以承载静态文件访问的、支持高并发、高性能的服务器”,我差点就想退了。
- 切片
切查阅资料得知,slice 并不是真正意义上的动态数组,而是一个引用类型。slice 总是指向一个底层 array,slice 的声明也可以像 array 一样,只是不需要长度。
1: slice 的默认开始位置是 0,ar[:n] 等价于 ar[0:n] 2: slice 的第二个序列默认是数组的长度,ar[n:] 等价于 ar[n:len(ar)] 3: 如果从一个数组里面直接获取 slice,可以这样 ar[:],因为默认第一个序列是 0,第二个是数组的长度,即等价于 ar[0:len(ar)]
这个3比如:
var array = [10]byte{'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'}
var aSlice []byte
aSlice = array[:] // 等价于 aSlice = array[0:10] 这样 aSlice 包含了全部的元素
切片可以用len获取长度,用cap获取最大容量(是它的第一个元素开始数,到它底层数组元素末尾的个数),append追加元素等等。
关于slice的cap:
var array [10]int
slice := array[2:4]
上面slice的容量就是8了,但是现在的版本可以指定容量:
slice = array[2:4:7]
上面这个slice的容量是7 - 2 = 5
-
nil是Go语言中一个预定义好的标识符,表示空值或零值。
-
可以用range快速遍历slice和map,map挺像C++里的。
-
用range遍历的时候会有两个返回值,如果有不需要接收的返回值可以用下划线代替。
-
函数也可以有多个返回值,这里老师说:在实际的业务逻辑代码里面几乎所有的函数都返回两个值,第一个是真正的返回结果,第二个值是错误信息。
-
结构体方法,那个method的语法是固定语法好像,稍微查了一下。
func (r ReceiverType) funcName(parameters) (results) -
其他的感觉就现用现查,好难啊。