1.指针类型
普通类型,变量存的就是值,也叫值类型
整数类型: int8、int16等等
浮点类型:float32、float64
布尔类型:bool
复数类型: complex64、complex128
字符串类型: string
字符类型: byte、rune获取变量的地址,用&,比如: var a int, 获取a的地址:&a
a := 2 &a
- 指针类型,变量存的是一个地址,这个地址存的才是值
- 获取指针类型所指向的值,使用:*,比如:var *p int, 使用*p获取p指向的值
流程控制
If / else分支判断
if condition1 { } if condition1 { } else { } if condition1 { } else if condition2 { } else if condition3 { } else { }
switch case语句
写法一
switch var { case var1: case var2: case var3: default: }
写法二
var i = 0 switch i { case 0: fallthrough case 1: fmt.Println(“1”) case 2: fmt.Println(“2”) default: fmt.Println(“def”) }
写法三
var i = 0 switch i { case 0, 1: fmt.Println(“1”) case 2: fmt.Println(“2”) default: fmt.Println(“def”) }
写法4
var i = 0 switch { condition1: fmt.Println(“i > 0 and i < 10”) condition2: fmt.Println(“i > 10 and i < 20”) default: fmt.Println(“def”) }
写法5
switch i := 0 { case i > 0 && i < 10: fmt.Println(“i > 0 and i < 10”) case i > 10 && i < 20: fmt.Println(“i > 10 and i < 20”) default: fmt.Println(“def”) }
for
写法一
for 条件 { }
写法二
for i > 0 { fmt.Println(“i > 0”) }
for range 语句(用来遍历数组、slice、map、chan)
str := “hello world,中国” for i, v := range str { fmt.Printf(“index[%d] val[%c] len[%d]\n”, i, v, len([]byte(v))) }
break continue语句
str := “hello world,中国” for i, v := range str { if i > 2 { continue } if (i > 3) { break } fmt.Printf(“index[%d] val[%c] len[%d]\n”, i, v, len([]byte(v))) }
goto 和 label 语句
package main import "fmt" func main() { LABEL1: for i := 0; i <= 5; i++ { for j := 0; j <= 5; j++ { if j == 4 { continue LABEL1 } fmt.Printf("i is: %d, and j is: %d\n", i, j) } } }