GO语言进阶与依赖管理与工程实践| 青训营

74 阅读2分钟

1.协程的创建和调度 协程:用户态,轻量级线程,栈kb级别 要创建一个Go协程,只需在函数或方法调用前加上go关键字即可,例如:

func HelloGoRoutine() {
    for i:=0;i<5;i++{
        go func(j int){
            hello(j)
            }
        }
}        

这将使函数以协程的方式异步运行,而不会阻塞主线程的执行。Go运行时会管理和调度这些协程的执行。 Go协程的调度由Go运行时(GORoutine Scheduler)负责。它根据一定的策略将协程分配给可用的处理器(CPU核心)来执行,以实现高效的并发。 在编写并发程序时,可以使用协程来进行任务的并行执行,从而提高程序的性能和响应能力。协程的优点在于它们的启动开销非常低,每个协程的内存开销也很小。 通过使用Go的协程,我们可以更自然地编写并发程序,而无需显式地管理线程、锁或信号量。这使得Go成为一个很好的选择,无论是构建高性能的服务器程序还是执行并行计算任务。 协程间通信提倡通过通信共享内存而不是共享内存进行通信 2.依赖管理 Go语言依赖管理有两个主要的工具被广泛使用:Go Modules和GOPATH。 GOPATH是一个环境变量,用于指定Go项目的工作目录。通过设置GOPATH,所有的Go代码和它们的依赖都被放置在该目录下的不同文件夹中。 在go1.11版本后,Go Modules已成为官方推荐的依赖管理工具。 Go Modules允许在任何地方创建项目,而无需依赖于GOPATH。你可以在项目的根目录中初始化Go Modules,使用go mod init命令创建一个新的go.mod文件,来追踪项目的依赖关系。 使用Go Modules时,可以使用go get命令获取单个包的最新版本,或使用特定版本号来获取特定版本的包。Go Modules会自动下载和管理这些依赖。还可以使用代理服务器来加快依赖下载的速度。