go特性
一、闭包
1. 闭包基本使用
```go
func main() {
n := 0
f := func() int {
n += 1
return n
}
fmt.Println(f()) // 别忘记括号,不加括号相当于地址
fmt.Println(f())
}
/*
输出:
1
2
*/
```2. 闭包作为函数返回值
3. 并发中的闭包
14. 并发闭包问题的两种解决方式
二、接口
1. 概述
2. 接口的组合
3. 类型断言
4. 空接口
5. 接口的比较性
三、Go标准库-锁、信号量、POOL
1. Mutex 互斥锁
2. RWMutex 读写互斥锁
3. WaitGroup 组等待
4. Cond 条件等待
5. Locker
6. Pool 临时对象池
四、Go的异常处理
1. 异常与错误的概念
2. 异常的处理
3. go异常和错误互相转化
4. 异常与错误的使用场景
5. 错误处理
6. 异常处理
五、Go语言中反射包的实现原理
1. 概述
2. 作用
六、Go语言并发的设计模式和应用场景
1. 利用阻塞通道自动生成数据。
2. 主程序阻塞通道等待,等到协程执行完发送信号,主程序再推出。
3. 指定数据生成器
4. 定时器
5. 当成先进先出的队列使用
6. 菊花链(过滤器)
七、关于golang锁的正确使用方式
1. 尽量减少锁的持有时间
2. 善用 defer 来确保在函数内正确释放了锁
3. 在适当时候使用 RWMutex
4. copy 结构体操作可能导致非预期的死锁
5. build/test 时使用 -race 参数以便运行时检测数据竞争问题
6. 使用 go-deadlock 检测死锁或锁等待问题
7. 实现 tryLock 功能
8. 改为使用 channel
八、其他
1. runtime.GOMAXPROCS()
2. go defer的一些注意事项
3. 信道死锁/阻塞
九、语言相关
1. map
2. goto
最后更新于