俺的第一天 | 青训营笔记

50 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天

今天只学习了第一课,学了一些基础语法。流水账笔记。

  1. xx

1.1课件的标题为:“什么是GO语言”,但是只列了8个优点和一段示例代码。对于毫无工程经验的我来说,优点1~7是很吸引人的,优点8更是不明白的,不要紧,不卑不亢,多学多了解。示例代码也不是经典的打印"hello world",原话是“仅用短短十行代码就实现了一个可以承载静态文件访问的、支持高并发、高性能的服务器”,我差点就想退了。

  1. 切片

切查阅资料得知,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

  1. nil是Go语言中一个预定义好的标识符,表示空值或零值。

  2. 可以用range快速遍历slice和map,map挺像C++里的。

  3. 用range遍历的时候会有两个返回值,如果有不需要接收的返回值可以用下划线代替。

  4. 函数也可以有多个返回值,这里老师说:在实际的业务逻辑代码里面几乎所有的函数都返回两个值,第一个是真正的返回结果,第二个值是错误信息。

  5. 结构体方法,那个method的语法是固定语法好像,稍微查了一下。

    func (r ReceiverType) funcName(parameters) (results)
    
  6. 其他的感觉就现用现查,好难啊。