Go 语言速查表

把 Go 语言最常用的语法特性整理成速查表,写 Go 代码时对照查。

编程语言·共 44 条命令·最后更新 2026-07-19
返回 编程语言

变量与常量 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 之间通信的主要方式,遵循 "不要通过共享内存通信,而要通过通信共享内存"。