1. := 语法糖的理解误区
在基础类型中,map,interface,point,channel,函数等空值为nil
:= 定义时声明并初始化了变量,同时也分配了内存地址,所以是一个真正的实例 ,不是空值
2. 为什么nil != nil
首先我们可以知道的是:
编译器可以清楚的知道变量的类型,但是接口类型除外
为什么s1 和 s2 同为nil,比较却是不相同的,因为接口的内部是分为Type和Value的,
s1 (T=*int,V=nil) s2 (T=nil,V=nil) 所以是不同的,所以导致nil != nil
下面这个例子,将给空接口赋值,因为类型不同,所以不等于nil
3. 空结构的作用
空结构 没有任何字段的结构类型,并且占用空间的大小为零字节
具体应用:
1. 在定义channel 时,使用空结构体代替基本类型来传递信号,更快更便捷
2. 能够防止unkeyed初始化结构
4. 什么是并行和并发
顺序执行:正在吃法,电话响了,吃完饭再接电话
并行:同一时间去做多件事,电脑同时能播放音乐和打游戏
并发:没有时间间隔,正在吃饭,电话响了,先接电话,打完电话再吃饭
5. goroutine 和 channel
goroutinue 指 协程,比线程更轻量级
channel 指 管道,用于协程之间的通信