01. Go 语言基础
Go(Golang)是 Google 开发的静态类型编译语言,以简洁、高效和并发支持著称。
Go 的特点:
- 静态类型,编译型语言
- 内置并发支持(goroutine 和 channel)
- 垃圾回收
- 强大的标准库
- 快速编译
go
package main
import "fmt"
// 函数定义
func greet(name string) string {
return "你好," + name + "!"
}
// 多返回值
func divide(a, b float64) (float64, error) {
if b == 0 {
return 0, fmt.Errorf("除数不能为零")
}
return a / b, nil
}
func main() {
fmt.Println(greet("Go 开发者"))
result, err := divide(10, 3)
if err != nil {
fmt.Println("错误:", err)
} else {
fmt.Printf("结果: %.2f\n", result)
}
}02. Goroutine 并发
Goroutine 是 Go 的轻量级线程,由 Go 运行时管理。创建 goroutine 只需在函数调用前加 go 关键字。
Channel 是 goroutine 之间通信的管道。使用 <- 操作符发送和接收数据。带缓冲的 channel 可以在满之前非阻塞地发送数据。
go
package main
import (
"fmt"
"time"
)
func worker(id int, jobs <-chan int, results chan<- int) {
for j := range jobs {
fmt.Printf("工人 %d 开始处理任务 %d\n", id, j)
time.Sleep(time.Second)
results <- j * 2
}
}
func main() {
jobs := make(chan int, 5)
results := make(chan int, 5)
// 启动 3 个工人
for w := 1; w <= 3; w++ {
go worker(w, jobs, results)
}
// 发送任务
for j := 1; j <= 5; j++ {
jobs <- j
}
close(jobs)
// 收集结果
for r := 1; r <= 5; r++ {
fmt.Println("结果:", <-results)
}
}Goroutine 非常轻量,初始栈只有几 KB,可以轻松创建成千上万个 goroutine。
知识测验
第 1/5 题正确 0
如何在 Go 中创建 goroutine?
下一节
下一节 结构体与方法