Go语言后端开发入门指南

一、环境搭建

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/fxwire 进行依赖注入

  • 学习 pprof 进行性能调优

掌握以上基础,你就可以开始构建自己的 Go 后端服务了。祝你编码愉快!

相关推荐
不会C语言的男孩1 小时前
C++ Primer 第8章:IO 库
开发语言·c++
兰令水1 小时前
leecodecode【层序遍历】【2026.6.3打卡-java版本】
java·开发语言
Halo_tjn1 小时前
反射与设计模式2
java·开发语言·算法
土星碎冰机1 小时前
实现飞书群推送报错接口,critical复现curl
后端·飞书
kaoa0001 小时前
Linux入门攻坚——79、XEN虚拟化-2
linux·运维·开发语言
磊 子2 小时前
C++仿函数以及STL内置仿函数
开发语言·c++
0x3F(小茶)2 小时前
嵌入式C设计模式完全指南(基于《C嵌入式编程设计模式》)
c语言·开发语言·单片机·嵌入式硬件·设计模式
灰鲸广告联盟2 小时前
新老用户广告价值不同?差异化策略如何实现收益最大化
android·开发语言·flutter·ios
周杰伦fans2 小时前
C# CAD 二次开发:无需启动 AutoCAD 实现 DWG 转 DXF 的完整技术指南
开发语言·c#