一、前言
Go(Golang)是 Google 开发的开源编程语言,以并发支持、简洁语法和高性能著称。它广泛应用于云原生、分布式系统、微服务和区块链等领域。本文带你从安装、入门语法到实战开发一步步掌握 Go 语言。
二、Go 语言的特点
- 简单高效:语法简洁,学习曲线平缓
- 并发原生支持:内置 goroutine 和 channel
- 跨平台:可一键编译到多平台
- 生态成熟:标准库丰富,社区活跃
三、环境准备
|
项目 |
要求 |
|
操作系统 |
Windows / Linux / macOS |
|
Go版本 |
1.20+(提议最新版) |
|
编辑器 |
VSCode + Go 插件 / Goland |
安装 Go
Windows:下载 MSI 安装包 → 双击安装
Linux:
wget https://go.dev/dl/go1.22.0.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.22.0.linux-amd64.tar.gz
echo “export PATH=$PATH:/usr/local/go/bin” >> ~/.bashrc
source ~/.bashrc
验证:
go version
四、Go 项目结构
Go 1.18+ 推荐使用模块化(Go Modules)方式管理依赖:
mkdir myproject && cd myproject
go mod init myproject
目录示例:
myproject/
├── go.mod
├── main.go
├── pkg/
└── internal/
五、Go 基础语法
1. Hello World
package main
import “fmt”
func main() {
fmt.Println(“Hello, Go!”)
}
运行:
go run main.go
2. 变量与常量
var a int = 10
b := 20 // 自动推导
const pi = 3.14
3. 函数
func add(x int, y int) int {
return x + y
}
4. 数组与切片
arr := [3]int{1,2,3}
slice := []int{4,5,6}
slice = append(slice, 7)
5. Map
m := map[string]int{“Alice”:25,”Bob”:30}
fmt.Println(m[“Alice”])
6. 结构体
type Person struct {
Name string
Age int
}
p := Person{“Tom”,20}
fmt.Println(p.Name)
7. Goroutine 与 Channel
package main
import (
“fmt”
“time”
)
func worker(id int, c chan string) {
fmt.Printf(“Worker %d started
“, id)
time.Sleep(time.Second)
c <- fmt.Sprintf(“Worker %d done”, id)
}
func main() {
c := make(chan string)
go worker(1, c)
go worker(2, c)
fmt.Println(<-c)
fmt.Println(<-c)
}
六、Go 模块与包管理
# 初始化模块
go mod init myproject
# 获取第三方库
go get github.com/gin-gonic/gin
七、Go 单元测试
新建 main_test.go:
package main
import “testing”
func TestAdd(t *testing.T) {
if add(2,3)!=5 {
t.Error(“Expected 5”)
}
}
运行测试:
go test
八、Go 实战案例:构建一个Web API
使用 Gin 框架:
go get github.com/gin-gonic/gin
main.go:
package main
import “github.com/gin-gonic/gin”
func main() {
r := gin.Default()
r.GET(“/ping”, func(c *gin.Context) {
c.JSON(200, gin.H{
“message”: “pong”,
})
})
r.GET(“/hello/:name”, func(c *gin.Context) {
name := c.Param(“name”)
c.JSON(200, gin.H{
“hello”: name,
})
})
r.Run(“:8080”) // 启动服务器
}
运行:
go run main.go
在浏览器访问
http://localhost:8080/ping
九、Go 高级主题(入门后可以学习)
- 并发模式:使用 select、channel、worker pool
- Go 泛型:1.18 引入泛型支持
- 数据库操作:gorm、sqlx
- 微服务:Go + gRPC + Kubernetes 部署
- 性能调优:pprof、Benchmark
十、Go 项目部署
交叉编译:
GOOS=linux GOARCH=amd64 go build -o app main.go
容器化部署:
FROM golang:1.22 as build
WORKDIR /app
COPY . .
RUN go build -o app main.go
FROM alpine:latest
WORKDIR /root/
COPY –from=build /app/app .
CMD [“./app”]
十一、总结
本文从 Go 语言的特点、安装配置、语法基础到实战开发和部署做了完整演示。跟着本文操作,新手可以快速上手 Go,并具备构建实际项目的能力。