这是我参与「第五届青训营 」伴学笔记创作活动的第 2 天
一、协程
1.并发与并行:
并发:我们同时启动多个线程,这些线程运行在同一个cpu上就是并发
并行:多个线程在多颗cpu上运行,并行的效率比并发要高
2.协程的概念:
在go语言中,进程被称为主线程,基于主线程创建的一种特殊的线程被称为协程(goroutine)协程比起上面说的线程更加的轻量级,可以轻松启动上万个。有独立的栈空间、共享程序堆空间、调度由用户可控制、协程是轻量级的线程。
3.协程的创建:
我们创建一个协程的方法很简单,在要用的函数前添加go 字段即可
package main
import (
"fmt"
"strconv"
"time"
)
func test(){
for i := 1; i <= 5; i++ {
fmt.Println("test() hello world" + strconv.Itoa(i))
time.Sleep(time.Second)
}
}
func main(){
go test()
for i := 1; i <= 5 ;i++ {
fmt.Println("main() hello golang" + strconv.Itoa(i))
time.Sleep(time.Second)
}
}
返回:
main() hello golang1
test() hello world1
main() hello golang2
test() hello world2
test() hello world3
main() hello golang3
main() hello golang4
test() hello world4
test() hello world5
main() hello golang5
二、依赖管理
1.go依赖管理演变:
2.Go Module的使用:
go init:
mkdir go_pro && cd go_pro
go mod init go_pro
3.Go Module命令:
`go mod tidy`:添加丢失的依赖,删除不用的依赖
`go mod download`:下载go.mod中的依赖到本地缓存,目前所有模块版本数据均缓存在 `$GOPATH/pkg/mod`和 `$GOPATH/pkg/sum` 下,也可以指定cache位置
`go mod graph`:显示模块依赖图
`go mod vendor`:复制依赖到vendor目录下
`go mod verify`:根据go.sum文件校验依赖
`go mod why`:解释为什么要依赖
`go list m -json all`:依赖详情
`go list m -versions github.com/gin-gonic/gin`:查看gin所有的历史版本
`go mod edit -require="github.com/gin-gonic/gin@v1.3.0`:更换依赖版本,执行完之后要 执行:`go mod tidy`,也可以直接改go.mod文件
`go clean -modcache`:清理所有已经缓存的模块版本数据
4.go get命令:
`go get packageName`:安装依赖
`go get -u` packageName:将依赖升级到最新的次要版本或修订版本
`go get -u=patch packageName`:将依赖升级到最新的修订版本
`go get package@version`:升级到指定的版本