数组:
定义:
方式一:
arr1 := [...]int{1,2,3}
方式二: arr2 := [3]int{1,2,3}
方式三: var arr3 [3]int
遍历:
//遍历数组 for k, v :=range arr3{ fmt.Println("key:%v,value:$v",k,v) }
值类型和引用类型:
1.基本数据类型 和 数组 都为值类型
2.改变副本值会影响原来值的为引用数据类型 指向的为同一个内存地址 。包含(切片)
定义二维数组:
//定义二维数组 arr := [3][2]string{ {"北京","上海"}, {"武汉","长沙"}, {"南昌","成都"}, } //遍历 for _,v1 :=range arr{ for _,v2 := range v1 { println(v2) } }
切片
切片的本质就是对底层数组的封装 ,类似可变长度数组 声明未复制 默认值为 nil
len(s)获取长度, cap(s)获取容量
长度:所含元素个数
容量:从第一个元素开始数,到底层数组末尾的个数
append()为切片动态添加元素,长度和容量同时会增加
合并切片
sliceA := []string{"张三丰","张学友","张国荣"} sliceB := []string{"刘德华","谢霆锋","阿三"} sliceA = append(sliceA,sliceB...) fmt.Println(sliceA)
copy()复制切片 防止改变副本而改变本身
sliceA := []string{"张三丰","张学友","张国荣"} sliceB := make([]string,4,4) //sliceC := []string{"刘德华","谢霆锋","阿三"} //sliceA = append(sliceA,sliceB...,sliceC...) copy(sliceB,sliceA) //把sliceA拷贝给sliceB中 fmt.Println(sliceB)
删除切片元素
用append方法删除
字符串 切片的互换
//字符串转切片 s1 := "你好 golang" runeStr := []rune(s1) runeStr[0] = ‘您‘ fmt.Println(string(runeStr))
原文:https://www.cnblogs.com/finnlee/p/14103354.html