在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
◆【循环】 ▶for 1,通常 for i=0; I < 5; i++{ fmt.Println(i) } 2,省略初始值 for ; i < 5; i++{ fmt.Println(i) } 3,省略初始语句和结束语句 for i < 5{ i++ fmt.Println(i) } 4,无限循环 for { fmt.Println("hello") } 5,break跳出for循环 6,continue继续下一次循环 7,for range循环
▶switch switch s { case 1: fmt.Println(s) case 2,3: fmt.Println(s) case 4,5: fmt.Println(s) default: fmt.Println("over.") } ▶ 不常用goto
◆【数组】 ▶定义 1,定义数组 var a [3]int var b [4]int 2,定义时初始化 var testArray = [3]string{"a","b","c"} 3,编译器推导数组长度 var testArray = [...]string{"a","b","c"} 4,使用索引值初始化 var testArray = [...]string{2:"a",4:"b",6:"c"}
▶遍历 1,for循环 for i := 0; i < len(testArray); i++ { fmt.Println(testArray) } 2, for range遍历 for index, value := range testArray { fmt.Println(index, value) } 只输出索引: for index := range testArray { fmt.Println(index) } 只输出值: for _, value := range testArray { fmt.Println(value) }
◆【多维数组】 1,二维数组 testArray := [2][2]string{ {"a1", "a2"}, {"b1", "b2"}, } 或: testArray := [2][2]string{ {"a1", "a2"}, {"b1", "b2"}} 多维数组简写: testArray := [...][2]string{ {"a1", "a2"}, {"b1", "b2"}}
2,遍历二维数组 for _, v1 := range testArray { for _, v2 := range v1 { fmt.Println(v2) } } ▶注意事项 1,数组是值类型,赋值,传参,都是拷贝了一份完整副本。
◆【切片】 1,定义 var s1 []string //声明切片;此时,s1是一个空切片[],长度和容量为0;且s1==nil var s2 []int{} //声明并且初始化;此时,s1是一个空切片[],长度和容量为0;且s2!=nil var s3 = []int{1,2,3}
2,基于数组定义切片 a := [5]int{1,2,3,4,5} 切片:b:= a[1:4] 切片再切片:c :=b[1:len(b)]
3, make函数构造切片 a := make([]int, 2, 5) //此切片个数为2,容量为5 a := make([]int, 0) //a != nil
4,通过len()函数获取切片长度 5,通过cap()函数获取切片容量
6,切片不能直接比较。 可以和nil比较,例:s1 == nil 使用len函数判断是否为0. 7,切片的赋值拷贝 切片赋值时,底层数组是一致的。 s1 := make{[] int, 5} //[0,0,0,0,0] s2 :=s1 s2[0] = 5 //此时,s1[0]值也为5
8,切片扩容;append方法为切片添加元素。 切片声明后,必须初始化,才能使用。 例: var a []int //声明,并未申请内存。 ※可以声明时初始化,也可以使用make函数初始化;也可采用append添加元素。 追加元素(例): a = append(a,1,2,3,4) b := []int{5,6,7} a = append(a,b...) //注意:b后面需有3个点(...)。
9,copy函数复制切片;此时,二者底层的数组不同。 例:a := []int{1,2,3} b := make([]int,3,3) c := b //直接赋值,则c与b共用底层数组,修改b,则修改c.
copy(b,a) //拷贝a到b b[0] = 10 fmt.Println(a) fmt.Println(b)
10,切片删除元素 切片没有直接删除操作;间接方法如下: 删除index的元素:append(a[:index], a[index+1:]...)
11,切片排序sort var a = [...]int{2,4,3,7,5} sort.Ints(a[:]) //a[:]是一个切片,指向底层数组a. fmt.Println(a) //上面对切片排序,影响的是底层数组。
◆【map】 1,定义map; 不初始化时为nil; var a map[string]int //key为string;值为int a = make(map[string]int,9) //make初始化 b := map[int]boot{ //声明时,初始化 1:true, 2:false, }
2, 判断键是否存在 map是无序的。 value, ok := socreMap["test1"] //如果test1存在,value返回值,ok为true.
①遍历键,值对 for k, v := range scoreMap { fmt.Println(k,v) }
②只遍历key。 for k := range scoreMap { fmt.Println(k) }
③只遍历value. for _, v := range scoreMap { fmt.Println(v) }
3,删除键值对 delete(scoreMap,"test1")//使用delete函数,删除scoreMap中的test1键值对。
value := rand.Intn(100) //生成0~99的随机数。
4,其它 值为切片的map; var sliceMap = make(map[string][]int,8) //只完成了map的初始化,后续使用要初始化切片。 |
请发表评论