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 申请内存
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
渐悟分享