Go(Golang)由 Google 开发,以简洁的语法和原生并发支持著称,是云原生时代(Docker/Kubernetes 都是 Go 写的)的热门语言。
一、Hello World
package main
import "fmt"
func main() {
fmt.Println("Hello, Go!")
}
go run main.go # 直接运行
go build main.go # 编译成可执行文件
二、语法特点
- 没有分号结尾,编译器自动插入
- 变量声明:
name := "Go"(短变量声明) - 多返回值:
result, err := doSomething() - 强制处理错误:惯用
if err != nil
三、goroutine:轻量级线程
这是 Go 的杀手锏。用 go 关键字即可启动一个并发任务,开销极小:
func say(s string) {
fmt.Println(s)
}
func main() {
go say("hello") // 并发执行
go say("world")
time.Sleep(time.Second) // 等待 goroutine
}
四、channel:协程间通信
goroutine 之间用 channel 传递数据,避免共享内存的竞态问题:
ch := make(chan int)
go func() {
ch <- 42 // 发送
}()
v := <-ch // 接收
fmt.Println(v)
Go 的并发哲学:"不要用共享内存来通信,而要用通信来共享内存"。channel 是实现这一思想的核心。
五、sync.WaitGroup 等待
实际中用 WaitGroup 优雅地等待所有 goroutine 完成,比 Sleep 可靠:
var wg sync.WaitGroup
for i := 0; i < 5; i++ {
wg.Add(1)
go func(n int) {
defer wg.Done()
fmt.Println(n)
}(i)
}
wg.Wait()
六、小结
Go 的魅力在于"简单且强大":语法简洁上手快,并发模型优雅高效。适合写后端服务、命令行工具、云原生组件。值得后端工程师学习。