go工程实践|青训营

64 阅读1分钟

语言进阶以及依赖管理

并发编程

go能够充分发挥多核优势,高效运行(与多线程一致)

1、 协程:用户态,轻量级线程,栈级别KB

加入go关键字就能够实现协程的使用

image.png

2、线程:内核态,线程有多个协程,栈级别MB

3、协程之间的通信:提倡通过通信共享内存而不是共享内存而实现通信。

4、channel的具体操作:channel通过make关键字,make(chan元素类型,【缓冲大小】)

如:无缓冲通道 make(chan int) 有缓冲通道 make(chan int,2) 可放置的元素量。

channel示例:

发送从0到9的数字放入src通道,将src通道中的数字平方再发送到dest有缓冲通道

不会因为消费者消费速度问题来降低执行效率问题。 image.png

并发安全lock

image.png

依赖管理

go依赖管理

利用他人开发的开发包,依赖原生sdk-》管理依赖库,将重点放在业务逻辑而不是框架结构上。

三个阶段:GOPATH->Go Vender->Go Module

不同环境依赖版本不同,控制依赖库版本。

gopath弊端

package升级后 无法实现package的多版本控制。

go vender弊端

存放项目依赖的副本 无法兼容不同package