一、环境搭建
bash
# Windows (winget)
winget install Go
# macOS
brew install go
# Linux (Ubuntu/Debian)
sudo apt install golang-go
# 验证安装
go version
IDE推荐:VS Code + Go插件 或 GoLand(免费试用)。
二、项目结构
myapp/ ├── main.go # 程序入口 ├── go.mod # 依赖管理 └── go.sum # 依赖锁定
提示 :实际项目可进一步拆分 handler、service、model 等包,并参考 golang-standards/project-layout 组织代码(如 cmd/、internal/、pkg/)。本文为保持简洁,所有代码暂放在 main.go 中。
三、HTTP服务开发
Go
package main
import (
"encoding/json"
"net/http"
)
type Response struct {
Message string `json:"message"`
}
func main() {
http.HandleFunc("/api/hello", func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(Response{Message: "Hello, Go!"})
})
http.ListenAndServe(":8080", nil)
}
运行后访问 http://localhost:8080/api/hello 即可看到响应。
四、路由与中间件
推荐使用 Gin 框架:
安装 Gin:
bash
go get github.com/gin-gonic/gin
Go
package main
import (
"github.com/gin-gonic/gin"
)
func main() {
r := gin.Default()
// 路由组
api := r.Group("/api")
{
api.GET("/hello", func(c *gin.Context) {
c.JSON(200, gin.H{"message": "Hello!"})
})
}
r.Run(":8080")
}
五、数据库连接
Go
package main
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
)
func main() {
db, err := sql.Open("mysql", "user:password@tcp(localhost:3306)/dbname")
if err != nil {
panic(err)
}
defer db.Close()
// 执行查询
rows, _ := db.Query("SELECT id, name FROM users")
defer rows.Close()
}
提示 :生产环境建议使用 sqlx 或 ORM(如 GORM),并将数据库配置存入环境变量。
六、并发处理
Go的并发是其核心优势:
Go
package main
import (
"fmt"
"sync"
)
func main() {
var wg sync.WaitGroup
for i := 0; i < 5; i++ {
wg.Add(1)
go func(id int) {
defer wg.Done()
fmt.Printf("Task %d done\n", id)
}(i)
}
wg.Wait()
}
补充:使用 Channel 进行通信
Go
ch := make(chan int)
go func() { ch <- 42 }()
value := <-ch
fmt.Println(value)
七、快速启动命令
Go
# 初始化模块
go mod init myapp
# 添加依赖
go get github.com/gin-gonic/gin
# 运行(开发阶段)
go run cmd/main.go
# 编译(当前平台)
go build -o myapp ./cmd
# 交叉编译(Linux 64位)
GOOS=linux GOARCH=amd64 go build -o myapp-linux ./cmd
总结
Go 后端开发的核心优势:
-
语法简洁:易于学习,代码可读性高
-
原生并发:goroutine + channel 模型高效安全
-
静态编译:单一二进制文件,部署零依赖
-
丰富生态:标准库强大,Gin/Echo/Fiber 等框架成熟
-
内置测试 :
go test+ 基准测试支持
进阶建议:
-
使用
context包处理超时和取消操作 -
编写单元测试和基准测试
-
采用
uber-go/fx或wire进行依赖注入 -
学习
pprof进行性能调优
掌握以上基础,你就可以开始构建自己的 Go 后端服务了。祝你编码愉快!