基础语法
翻译整理自 A Tour of Go - Basics 与 Go by Example。
1. 包(Package)
Go 程序由包组成,程序入口是 package main:
package main
import (
"fmt"
"math/rand"
)
func main() {
fmt.Println("随机数:", rand.Intn(10))
}- 每个
.go文件第一行必须声明所属包 - 导入路径用双引号,多个用括号分组
- 包中首字母大写的标识符为导出(公开),小写为私有
2. 导入(Import)
可以单行或多行导入:
import "fmt"
import "math/rand"等价于:
import (
"fmt"
"math/rand"
)也可以给包起别名:
import (
f "fmt" // 别名 f
_ "image/png" // 仅初始化,不引用名字
)3. 函数
函数定义使用 func 关键字:
func add(x int, y int) int {
return x + y
}类型相同可以省略前一个:
func add(x, y int) int {
return x + y
}多返回值
函数可返回多个值(通常用于 result + error):
func swap(a, b string) (string, string) {
return b, a
}
func main() {
x, y := swap("A", "B")
fmt.Println(x, y) // B A
}命名返回值
返回值可命名,命名后会在函数开头被声明为零值,return 不带参数即可返回:
func divide(dividend, divisor int) (quotient, remainder int) {
quotient = dividend / divisor
remainder = dividend % divisor
return // 裸 return
}4. 变量
var i int // 零值 0
var s = "abc" // 类型推断
var x, y = 1, 2 // 多重赋值简短声明(仅函数内):
name := "Go" // 推断为 string零值:数值类型
0、布尔false、字符串""、指针/接口/切片/map/channel/函数nil。
5. 常量
const Pi = 3.14159
const (
StatusOK = 200
NotFound = 404
)iota 枚举
iota 在 const 块中从 0 起每行递增:
type Weekday int
const (
Sunday Weekday = iota // 0
Monday // 1
Tuesday // 2
Wednesday // 3
Thursday // 4
Friday // 5
Saturday // 6
)6. 命名规范
- 使用驼峰
camelCase或CamelCase - 首字母大小写控制可见性
- 缩写词全大写或全小写:
URL/httpClient - 局部变量优先短名:
i、ok、err
小结
掌握包、导入、函数、变量、常量后,你已经可以编写结构清晰的 Go 程序。下一章学习流程控制。