导入包
1 2 3 4 5 6
| import ( "fmt" "math/rand" ) import "fmt" import "math"
|
导出名
如果一个名字以大写字母开头,那么它就是已导出的
变量
1 2 3 4
| var x int = 3 x := 3 x, y := 1, 2 const Pi = 3.14
|
函数
1 2 3 4 5 6 7 8
| func add(x, y int) int { return x + y } func test() (x, y int) { x = 1 y = 2 return }
|
类型
- 整数:
int int8~int16 uint uint8~uint64
- 浮点数:
float32 float64
- 复数:
complex64 complex128
- 字符串:
string
- 布尔值:
bool
- 字符:
byte(一个字节,等于uint8) rune(一个Unicode字符,等于int32)
类型转换:var i int = 42 var f float64 = float64(i)
循环
1 2 3 4 5
| for i := 0; i < 10; i++ { } for i < 10 {} for {}
|
条件判断
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| if i = 1; i < 10 {}
switch i = 1; i { case 1 + 1 : fmt.Printf(3) case 1: fmt.Printf(1) fallthrough case 2: fmt.Printf(2) default: fmt.Printf(0) }
switch { case t.Hour() < 12: fmt.Println("早上好!") case t.Hour() < 17: fmt.Println("下午好!") default: fmt.Println("晚上好!") }
|
defer 延迟执行
1 2 3 4 5 6 7
| func main() { defer fmt.Println("world1") defer fmt.Println("world2")
fmt.Println("hello") }
|
可以用于 资源释放 释放锁 关闭文件 处理错误等
指针
1 2 3 4 5
| var p *int i := 42 p = &i fmt.Println(*p) *p = 21
|
结构体
1 2 3 4 5 6 7 8 9
| type Vertex struct { X int Y int }
var v = Vertex{1, 2} fmt.Println(v.X, v.Y) p := &v fmt.Println(p.X)
|