Golang 学习指南
目录
- 变量与常量
- 数据类型与控制结构
- 常用数据结构
- 函数与错误处理
- 指针与并发
- Gin 框架与 go mod
- 小结与参考资料
1. 变量与常量
- 变量(var)
- 用于定义可变的值。
- 可以指定类型,也可以自动推断类型。
- 示例:
var name string = "Golang" // 明确指定类型 age := 18 // 自动推断为 int fmt.Println(name, age) // 输出:Golang 18
- 常量(const)
- 用于定义不可变的值,声明时必须赋初值。
- 类型可以省略,不能用 :=。
- 示例:
const pi = 3.1415 // pi 是常量,类型自动推断为 float64 // pi = 3.15 // 错误,常量不能被赋新值 const greeting string = "Hello" // 也可以指定类型 fmt.Println(pi, greeting) // 输出:3.1415 Hello
- 注意
- var 只能定义变量,const 只能定义常量。
- 常量一旦定义,值不可更改。
2. 数据类型与控制结构
- 基本数据类型
- int、float64、bool、string 等。
- 示例:
var n int // 默认值 0 var f float64 // 默认值 0.0 var b bool // 默认值 false var s string // 默认值 "" fmt.Println(n, f, b, s) // 输出:0 0 false
- 条件与循环
- if/else、for 循环。
- 示例:
age := 20 if age >= 18 {fmt.Println("成年人") } else {fmt.Println("未成年人") }// for 循环 for i := 0; i < 3; i++ {fmt.Println(i) }
3. 常用数据结构
- 数组与切片(slice)
- 数组长度固定,切片长度可变。
- 示例:
arr := [3]int{1, 2, 3} // 数组 s := []int{4, 5, 6} // 切片 s = append(s, 7) // 添加元素 fmt.Println(arr, s) // 输出:[1 2 3] [4 5 6 7]
- map(字典)
- 键值对集合。
- 示例:
m := make(map[string]int) // 创建空 map m["one"] = 1 // 给 key "one" 赋值 1 m["two"] = 2 // 给 key "two" 赋值 2 fmt.Println(m) // 输出:map[one:1 two:2] v := m["one"] // 取值 delete(m, "one") // 删除 key for k, v := range m {fmt.Println(k, v) // 遍历 }
4. 函数与错误处理
- 函数定义与调用
- 示例:
func add(a int, b int) int {return a + b } sum := add(3, 5) fmt.Println(sum) // 输出:8
- 示例:
- 多返回值与错误处理
- Go 常用 error 类型处理错误。
- 示例:
import "errors" func div(a, b int) (int, error) {if b == 0 {return 0, errors.New("除数不能为0")}return a / b, nil } result, err := div(10, 0) if err != nil {fmt.Println("错误:", err) } else {fmt.Println(result) }
5. 指针与并发
- 指针
- 指针保存变量的内存地址,可用于函数参数传递和并发安全。
- 示例:
var x int = 10 var p *int = &x // p 是指向 x 的指针 fmt.Println(*p) // 输出:10,*p 取指针指向的值
- 并发:Goroutine 和 Channel
- 示例:
ch := make(chan int) // 创建 int 类型的通道 go func() {ch <- 42 // 向通道发送数据 }() v := <-ch // 从通道接收数据 fmt.Println(v) // 输出:42
- 指针常用于并发安全的数据结构和锁。
- 示例:
6. Gin 框架与 go mod
- 初始化 go mod
- 在项目目录下执行:
go mod init myginapp
- 在项目目录下执行:
- 安装 Gin 框架
- 执行:
go get github.com/gin-gonic/gin
- 执行:
- 快速搭建 Web 服务
- 示例:
import "github.com/gin-gonic/gin" r := gin.Default() // 创建 Gin 路由器 r.GET("/ping", func(c *gin.Context) {c.JSON(200, gin.H{"message": "pong"}) // 返回 JSON }) r.Run() // 启动服务,默认端口 8080 // 访问 http://localhost:8080/ping 得到 {"message":"pong"}
- 示例:
- go mod
- 自动管理依赖,go.mod 文件记录依赖包信息。
7. 小结与参考资料
- Go 语法简洁,适合高并发、网络编程。
- 推荐阅读:
- Go 官方文档
- Go by Example
- Gin 官方文档