Go 语言的常用特性包括以下几个方面(续):
-
- 并发:Go 语言是一种支持并发编程的语言,它使用
goroutine和channel来实现并发。goroutine是一种轻量级的线程,它可以在同一进程中并行执行多个任务。channel是一种用于在不同goroutine之间传递数据的机制,它可以保证数据的同步和安全。Go 语言使用go关键字来创建goroutine,使用make函数和<-运算符来创建和操作channel。例如:
- 并发:Go 语言是一种支持并发编程的语言,它使用
func sum(a []int, c chan int) {
s := 0
for _, v := range a {
s += v
}
c <- s
}
a := []int{1,2,3,4,5}
c := make(chan int)
go sum(a[:len(a)/2], c)
go sum(a[len(a)/2:], c)
x, y := <-c, <-c
fmt.Println(x, y, x+y)
// 定义一个名为 sum 的函数,接受一个 int 类型的切片和一个 int 类型的通道作为参数 // 定义一个名为 s 的变量,初始值为 0 // 遍历切片 a 的所有元素 // 累加元素到 s // 将 s 的值发送到通道 c // 定义一个 int 类型的切片 a // 创建一个 int 类型的通道 c // 创建一个 goroutine 来计算 a 前半部分的和,并将结果发送到 c // 创建另一个 goroutine 来计算 a 后半部分的和,并将结果发送到 c // 从 c 中接收两个值,并赋给 x 和 y // 打印 x, y 和 x+y 的值
-
- 模块:Go 语言使用模块来管理代码的依赖和版本。模块是一组相关的 Go 包的集合,它有一个唯一的路径作为标识符。模块可以从本地或远程仓库中获取和更新。Go 语言使用
go.mod文件来定义模块的名称、版本和依赖。Go 语言使用go命令来创建、下载、编译和运行模块。例如:
- 模块:Go 语言使用模块来管理代码的依赖和版本。模块是一组相关的 Go 包的集合,它有一个唯一的路径作为标识符。模块可以从本地或远程仓库中获取和更新。Go 语言使用
// go.mod 文件
module example.com/hello // 定义模块的名称
go 1.16 // 定义 Go 语言的版本
require rsc.io/quote v1.5.2 // 定义依赖的模块和版本
// main.go 文件
package main // 定义包的名称
import ( // 导入依赖的包
"fmt"
"rsc.io/quote"
)
func main() { // 定义主函数
fmt.Println(quote.Hello()) // 调用 quote 包的 Hello 函数,并打印返回值
}
// 运行命令
go run . // 编译并运行当前模块