关于Go 语言基础语法和常用特性解析(第六节)| 青训营

55 阅读2分钟

Go 语言的常用特性包括以下几个方面(续):

    • 并发:Go 语言是一种支持并发编程的语言,它使用 goroutine 和 channel 来实现并发。goroutine 是一种轻量级的线程,它可以在同一进程中并行执行多个任务。channel 是一种用于在不同 goroutine 之间传递数据的机制,它可以保证数据的同步和安全。Go 语言使用 go 关键字来创建 goroutine,使用 make 函数和 <- 运算符来创建和操作 channel。例如:

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.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 . // 编译并运行当前模块