Go从0开发(3)_流程控制,map,切片

流程控制

跳出跳过 for 循环

break   continue

for j:=01;j<=10;j++{
if j==5 {
break //跳出该循环
}
if j ==8 {
continue //跳过当前循环
}
fmt.Println(j)
}

switch

//switch使用
//switch m:=1;m {
m := 666
switch m {
case 1:
fmt.Println(111)
case 2:
fmt.Println(222)
default:
fmt.Println(333)
}

goto

//goto
xxx:
for j := 01; j <= 10; j++ {
if j==2{
goto xxx //死循环
}
fmt.Println(333)
}

运算符

算数运算符

+ - * / %

关系运算符 相同类型才可以比较

==   !=    >=    <=    >    < 

逻辑运算符

&&    ||     !变量

复制运算数符

=     +=   -=  %= ...

复合数据类型

数组

var a1 []int  //定义
a1 = []int{1, 2, 3} //赋值
fmt.Printf("%T \n ", a1)

b1 := [...]int{1,2,3}
fmt.Println(b1)

c1:= [5]int{0:1,4:6}
fmt.Println(c1)

//二维数组
d1 := [][]int{
{1,23,3},
{1,23,3},
{1,23,3},
}

for _,v1 := range d1{
for _,v2 := range v1{
fmt.Println(v2)
}
}

切片

//切片定义
var s1 []int
s1 = []int{1,2,3,4,5,6,7,8,9}
fmt.Println(s1)

a1 := [...]int{1,2,3,4,5,6,7,8,9,0,11}
s2 := a1[2:6]
s3 := a1[:8]
fmt.Println(s2)
fmt.Println(a1[:6])
fmt.Println(a1[6:])
fmt.Println(s2[:])

//切片容量 是第一个元素到最后元素的数量
fmt.Println(cap(s2))
fmt.Println(cap(s3))

//make 函数 切片
s4 := make([]int,2,30) //长度 容量
fmt.Println(cap(s4))
fmt.Println(s4)

切片追加和copy

var s1 []int
s1 = []int{1,2}
//切片追加
s2 := append(s1,1,2)
//切片修改
s1[0] =999
fmt.Println(s1)
fmt.Println(s2)

//copy
var s3 = make([]int,3,3)
copy(s3,s1)
fmt.Println(s3)

删除操作

//删除指定切片内容
s4 := []int{1,2,3,4,5,6,7,8,9}
s5 := s4[:]
s6 := append(s5[:1],s5[2:]...)
fmt.Println(s6)

指针

1 取地址 &

2根据地址取值 *

a := 123
b := &a
fmt.Println(b)
*b = 789
fmt.Println(*b)

make和new都是申请内存的

new一般是初始化 对应的指针类型

make 用来给 slice map chan 申请内存

map

var a1 map[int]int
fmt.Println(a1 == nil)
a1 = make(map[int]int,10 ) //初始化
a1[1] =1
a1[2] =1
a1[3] =1
fmt.Println(a1)

var a2 map[int]int
a2 = map[int]int{1:1}
fmt.Println(a2)

//遍历
for k,v:=range a1{
fmt.Println(k,v)
}

//删除
delete(a1,4)
fmt.Println(a1)
//元素类型为map的切片
var s1 = make([]map[int]string,10,10)
s1[0] = make(map[int]string,10)
s1[0][0] = "123"
fmt.Println(s1)

//值为切片类型的map
var s2 = make(map[int][]int,10)
s2[0] = []int{1,2,3}
s2[9] = []int{1,2,3}
fmt.Println(s2)



伍先生
  • 职业: 程序员,产品
  • 码龄: 8.7
  • 技能: PHP Go 前端
  • 微信: JwCode
  • 公众号/小程序: 渐悟分享