这是我参与[第五届青训营]伴学笔记创作活动的第二天。 go主要用协程来进行并行的处理 PPT写反了,协程为kb级别,线程为MB级别 go语言提倡的是通过通信共享内存,不建议通过共享内存实现通信 因为共享内存会对内存锁有开销。
- go(协程) : 通过关键字 go 即可创建一个协程.
- chan : golang 中用于并发的通道,用于协程的通信.
-
- 有缓冲通道
- 无缓冲通道
- 单向通道
- select: golang 提供的多路复用机制.
- close() : golang 的内置函数, 可以关闭一个通道.
- sync: golang 标准库之一,提供了锁.
- 定时器: golang 标准库 time 提供的重要功能, 提供了定时器功能,可用于超时处理.
-
- Timer
- Ticker
gopath-govendor-go moudle
主要实现不同项目依赖的版本不同,控制依赖库的版本 最初的时候Go语言所依赖的所有的第三方包都放在 GOPATH 目录下面,这就导致了同一个包只能保存一个版本的代码,如果不同的项目依赖同一个第三方的包的不同版本, godep 是一个Go语言官方提供的通过 vender 模式来管理第三方依赖的工具,类似的还有由社区维护的准官方包管理工具 dep。
GO111MODULE Go1.11版本之后开始支持gomodule
要启用go module支持首先要设置环境变量GO111MODULE,通过它可以开启或关闭模块支持,它有三个可选值:off、on、auto,默认值是auto。
GO111MODULE=off禁用模块支持,编译时会从GOPATH和vendor文件夹中查找包。 GO111MODULE=on启用模块支持,编译时会忽略GOPATH和vendor文件夹,只根据 go.mod下载依赖。 GO111MODULE=auto,当项目在$GOPATH/src外且项目根目录有go.mod文件时,开启模块支持。 简单来说,设置GO111MODULE=on之后就可以使用go module了,以后就没有必要在GOPATH中创建项目了,并且还能够很好的管理项目依赖的第三方包信息。
使用 go module 管理依赖后会在项目根目录下生成两个文件go.mod和go.sum。