😚一个不甘平凡的普通人,致力于为Golang社区和算法学习做出贡献,期待您的关注和认可,陪您一起学习打卡!!!😘😘😘
🤗专栏:算法学习
🤗专栏:Go实战
💬个人主页:个人主页
文章目录
- 1. := 语法糖的理解误区
- 2. 为什么nil != nil
- 3. 空结构的作用
- 4. 什么是并行和并发
- 5. goroutine 和 channel
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 指 管道,用于协程之间的通信