课程笔记记录
- 并发编程 Go语言提供了强大的并发编程支持,通过goroutine和channel可以实现高效的并发操作。 goroutine:goroutine是Go语言中的轻量级线程,通过go关键字启动。goroutine之间可以通过channel进行通信。 chanGo语言提供了强大的并发编程支持,通过goroutine和channel可以实现高效的并发操作。
- goroutine goroutine是Go语言中的轻量级线程,通过go关键字启动。goroutine之间可以通过channel进行通信。 以下是一个简单的goroutine示例: Go package main
import ( "fmt" "time" )
func say(s string) { for i := 0; i < 5; i++ { time.Sleep(100 * time.Millisecond) fmt.Println(s) } }
func main() { go say("world") say("hello") } 在这个例子中,say函数是一个goroutine,它会在后台运行。main函数中的say函数会立即执行,然后等待say("world")完成。 2. channel channel是Go语言中的通信机制,用于goroutine之间的数据传递和同步。 以下是一个使用channel的示例: Go package main
import ( "fmt" ) func sum(s []int, c chan int) { sum := 0 for _, v := range s { sum += v } c <- sum // 将和发送到channel } func main() { s := []int{7, 2, 8, -9, 4, 0}
c := make(chan int)
go sum(s[:len(s)/2], c)
go sum(s[len(s)/2:], c)
x, y := <-c, <-c // 从channel接收
fmt.Println(x, y, x+y)
} 在这个例子中,sum函数是一个goroutine,它会在后台运行。main函数中的sum函数会立即执行,然后等待sum(s[:len(s)/2], c)和sum(s[len(s)/2:], c)完成。最后,main函数从channel接收结果并打印出来。nel:channel是Go语言中的通信机制,用于goroutine之间的数据传递和同步。
- 错误处理 Go语言通过返回值来处理错误,而不是使用异常。每个函数可以返回一个额外的错误值,调用者需要检查这个错误值。
- 接口 Go语言中的接口是一种抽象类型,它定义了一组方法。任何实现了这些方法的类型都实现了该接口。
- 反射 Go语言提供了反射机制,可以通过reflect包来动态地获取和修改变量的类型和值。
- 高级数据结构 Go语言提供了一些高级数据结构,如切片(slice)、映射(map)和结构体(struct)。以下是一些关键概念和操作: 切片:动态数组,可以通过append函数添加元素。 映射:键值对的集合,可以通过make函数创建。 结构体:自定义数据类型,可以包含多个字段。
- 网络编程 Go语言内置了强大的网络编程库,如net/http包。以下是一些关键概念和操作: HTTP服务器:可以使用http.HandleFunc和http.ListenAndServe来创建简单的HTTP服务器。 客户端:可以使用http.Get、http.Post等函数来发送HTTP请求。
- 测试和性能优化 Go语言提供了丰富的测试工具和性能分析工具,以下是一些关键概念和操作: 单元测试:可以使用go test命令来运行单元测试。 基准测试:可以使用go test -bench命令来运行基准测试。 性能分析:可以使用go test -cpuprofile和go test -memprofile来生成CPU和内存分析文件
- 测试 Go语言提供了丰富的测试框架,包括单元测试、性能测试和基准测试。可以通过go test命令来运行测试。 依赖管理 Go语言使用go.mod文件来管理依赖。go.mod文件包含了模块的名称、版本和依赖的包。
- 创建模块 使用go mod init命令创建一个新的模块: Bash go mod init example.com/my/module
- 添加依赖 使用go get命令添加依赖: Bash go get github.com/example/package
- 更新依赖 使用go get命令更新依赖: Bash go get -u github.com/example/package
- 移除依赖 使用go mod tidy命令移除不再使用的依赖: Bash go mod tidy 对学习Go语言进阶内容和依赖管理的一些建议 并发编程:深入理解goroutine和channel的工作原理,学习如何使用它们来编写高效的并发程序。可以参考《Go并发编程实战》等书籍。 错误处理:Go语言通过返回值来处理错误,而不是使用异常。学习如何正确地处理错误,以及如何设计函数以返回错误。 接口:Go语言中的接口是一种抽象类型,它定义了一组方法。学习如何定义和使用接口,以及如何实现接口。 反射:Go语言提供了反射机制,可以通过reflect包来动态地获取和修改变量的类型和值。学习如何使用反射,以及它的适用场景。 测试:Go语言提供了丰富的测试框架,包括单元测试、性能测试和基准测试。学习如何编写和运行测试,以及如何使用测试来提高代码质量。 学习依赖管理 理解go.mod文件:学习如何使用go.mod文件来管理依赖,包括如何添加、更新和移除依赖。 使用Go Modules:Go Modules是Go语言官方推荐的依赖管理工具。学习如何使用Go Modules来管理依赖,以及如何解决依赖冲突。 依赖版本控制:学习如何使用版本号来控制依赖的版本,以及如何使用go get命令来获取特定版本的依赖。 依赖代理:学习如何使用依赖代理来加速依赖的下载,以及如何配置依赖代理。 依赖安全性:学习如何检查依赖的安全性,以及如何使用go mod tidy命令来移除不再使用的依赖。