Golang 语法速查
提示
语法速查只适用于有经验者重拾回忆,不适合用于新手学习。
变量声明
go
// 变量声明
var a, b int
var c, d = 1, 2 // 可同时赋值,此时可省略类型
var (
e int
f = 11
)
// 短声明
i, j, k := 4, 5, 6 // 变量声明同时赋值,不可用于全局变量声明,不可标注类型常量声明
go
// 常量声明
const c1, c2 string = "hello", "world"
const c3, c4 = "so", "soso"
const (
c5 int = 1
c6 = 2
)
// iota
const (
c1 = iota * 10 // (iota=0) 0
c2 // (iota=1) 10
c3 // (iota=2) 20
)
const (
a, b = iota + 1, iota + 2 // (iota=0) 1, 2
c, d // (iota=1) 2, 3
e, f // (iota=2) 3, 4
g, h = iota * 2, iota * 3 // (iota=3) 6, 9
i, k // (iota=4) 8, 12
)类型
基础类型
- 布尔类型:
bool(值为trueorfalse) - 定长整型:
int8/int16/int32/int64/uint8/uint16/uint32/uint64 - 不定长整型:
int/uint(32/64 位系统下分别位 32/64 位) - 浮点型:
float32/float64 - 复数型:
complex64/complex128(实部、虚部都是一个对应 float) - 字符型:
byte=uint8, 一般用于表示 ASCII 字符rune=int32, 一般用于标识 Unicode 字符
- 字符串类型:
string - 数组类型(Array): 语法为
[length]type(e.g.[10]int) - 切片类型(Slice): 语法为
[]type(e.g.[]int) - 字典类型(Map):
map[keyType]valueType(e.g.map[string]string) - 函数类型(Function)
- 接口类型(Interface)
- 结构类型(Struct)
- 其他特殊类型:
uintptr
类型转换和强制类型转换
类型转换
go
a = (int32)b类型扩展
函数
信息
函数支持多返回值
