数组和切片
- 数组的赋值是 值 传递,作为参数是一次复制操作。
- 数组与切片的区别,指定元素个数的是数组,没指定的是切片
- 切片取值是取的下标前闭后开的(myArray[2, 4])。
- 切片的赋值是引用传递,若要值传递,用 copy(dst, src)
- 字符串可以用数组下标方式取值,但不能赋值,会报编译型错误。
加载顺序
import --> const --> var --> init()
time.Time
- Golang 中 time.Time 类型的零值对应的时间戳是个负值,表示的是: 0001年01月01日,unix值是:-62135596800(负值),而 mongoDB中 date 的零值对应的时间戳是0,表示的是 1970年01月01日。
- time.After() 函数常用于 timeout,它返回的一个通道 <-chan time.Time,直到超时该通道才返回值
其它
- 浮点数比较不能用 == ,用 math.Fdim() 函数来比较
- 关闭通道,但通道中还有数据怎么办?关闭通道后,不能再写数据(会抛异常),但依然可以读取。所以 val, ok := <-chans 这句中 若 ok 为 false 即表示了没值,也表示通道被关闭了。因为没被关闭的话,会在阻塞状态。
- append 不是线程安全的,当并发时可能导致不可预估情况发生