Go 语言速查表
把 Go 语言最常用的语法特性整理成速查表,写 Go 代码时对照查。
返回 编程语言变量与常量 Variables & Constants 7
var name string = "value"显式声明变量
name := "value"短变量声明(自动推断类型)
const Pi = 3.14声明常量
var (name string; age int)批量声明变量
var arr [5]int声明数组
slice := []int{1, 2, 3}声明切片
m := map[string]int{"a": 1}声明 map
控制流 Control Flow 8
if condition { } else { }if 语句
if err := fn(); err != nil { }if 带初始化语句
switch x { case 1: case 2: default: }switch 语句
for i := 0; i < 10; i++ { }for 循环
for condition { }while 风格循环
for { }无限循环
for i, v := range slice { }遍历切片/数组
for k, v := range map { }遍历 map
函数 Functions 6
func add(a, b int) int { return a + b }普通函数
func swap(a, b int) (int, int)多返回值
func sum(nums ...int) int可变参数
defer fn()延迟执行(函数退出时执行)
panic("error")抛出恐慌(程序崩溃)
recover()捕获恐慌(在 defer 中使用)
结构体与方法 Struct & Method 5
type User struct { Name string; Age int }定义结构体
u := User{Name: "tom", Age: 20}创建结构体实例
func (u User) String() string值接收者方法
func (u *User) SetName(n string)指针接收者方法
u := &User{}创建结构体指针
接口 Interface 5
type Reader interface { Read(p []byte) (int, error) }定义接口
var r Reader = &File{}接口实现(隐式,无需 implements)
type Empty interface{}空接口(可存储任意类型)
v, ok := i.(string)类型断言
switch v := i.(type) { }类型选择
并发 Concurrency 8
go fn()启动 goroutine
ch := make(chan int)创建无缓冲 channel
ch := make(chan int, 10)创建有缓冲 channel
ch <- value发送值到 channel
value := <-ch从 channel 接收值
close(ch)关闭 channel
select { case <-ch1: case <-ch2: }多路复用
var wg sync.WaitGroup等待组,等待多个 goroutine
错误处理 Error Handling 5
if err != nil { return err }标准错误检查
type MyError struct { msg string }自定义错误类型
func (e *MyError) Error() string实现 error 接口
errors.New("message")创建错误
fmt.Errorf("failed: %w", err)包装错误(Go 1.13+)
💡 提示
- Go 的错误处理是显式的,每个可能返回 error 的函数都要检查 err != nil。
- goroutine 非常轻量(几 KB),可以轻松创建数十万个。
- channel 是 goroutine 之间通信的主要方式,遵循 "不要通过共享内存通信,而要通过通信共享内存"。