一、数组(类似python的list)
数组的长度一旦定义了就不能动态增长。并且存储的数据类型必须相同。
创建方法:
var 数组名 [长度]数据类型
例如:
package main import "fmt" func main(){ var l [5]int //定义l名字,长度为5,数据类型为int的数组 l[0] = 1 //赋值 l[1] = 2 l[2] = 3 l[3] = 4 fmt.Println(l) fmt.Println(l[2]) fmt.Println(l[1:3]) //输出1到3的数组 fmt.Println(l[0:]) //0到结尾 fmt.Println(l[:3]) //0到3 } ##结果## [1 2 3 4 0] 3 [2 3] [1 2 3 4 0] [1 2 3]
数组的四种初始化方式
例如:
var s1 [3]int = [3]int{1,2,3} fmt.Println("s1",s1) var s2 [4]int = [...]int{5,6,7,8} //[...]是固定写法 fmt.Println("s2",s2) var s3 = [2]int{9,10} //第一种的简化 fmt.Println("s3",s3) var s4 = [...]int{3:43,1:41,0:40,2:42} //类似键值对 fmt.Println("s4",s4) ##结果## s1 [1 2 3] s2 [5 6 7 8] s3 [9 10] s4 [40 41 42 43]
数组的遍历
例如:
var s4 = [...]int{3:43,1:41,0:40,2:42} //类似键值对 fmt.Println("s4",s4) for index,value := range s4{ fmt.Println(index,value) } #结果## 0 40 1 41 2 42 3 43
二、slice切片
1、切片是数组的引用
2、切片的使用类似数组,如遍历
3、切片的长度是可变的
创建语法
var 切片名 []类型
如:
var qiepian []int
切片例子:
###例子一
var suzhu [4]int = [...]int{5,6,7,8} slice := suzhu[1:4] //1到4的值,不包含4 fmt.Println(suzhu) fmt.Println(slice) fmt.Println("切片的容量",cap(slice)) ##结果 [5 6 7 8] [6 7 8] 切片的容量 3
###例子二、使用make创建切片 var slice []int = make([]int,4,10) //类型,大小(长度),容量(可选),容量必须大于长度 slice[0] = 10 slice[1] = 11 fmt.Println(slice) ##结果## [10 11 0 0] ###例子三 var slice []int = []int {2,4,6} fmt.Println(slice) ##结果## 2 4 6
切片的append追加
例如:
var slice []int = []int {2,4,6} fmt.Println(slice) //使用append直接追加切片内容(类似python list的append) slice = append(slice,8,10) fmt.Println(slice) slice = append(slice,slice...) //追加切片,...是固定写法 fmt.Println(slice) ###结果### [2 4 6] [2 4 6 8 10] [2 4 6 8 10 2 4 6 8 10]
切片的copy操作
使用copy内置函数
例如:
var slice []int = []int {2,4,6} fmt.Println(slice) var slice2 []int = make([]int,5) fmt.Println(slice2) copy(slice2,slice) //将slice复制给slice2 fmt.Println(slice) fmt.Println(slice2 ##结果## [2 4 6] [0 0 0 0 0] [2 4 6] [2 4 6 0 0]
使用切片改变字符串的内容
例子:
var str string = "hello" fmt.Println(str) arr := []byte(str) arr[1] = 'a' //转成字符串 arr1 := []rune(str) //中文转换 arr1[0] = '狗' fmt.Println(arr) str = string(arr) fmt.Println(str) str = string(arr1) fmt.Println(str) ##结果## hello [104 97 108 108 111] hallo 狗ello
map(类似python的dict)
map是key-value数据结构(类似python的dict)
map是无序存储的
创建map语法
var map 变量名 map[keytype]valuetype
如:
var m1 map[string]string var m2 map[string]int var m3 map[int]string var m4 map[string]map[string]string
使用例子:
package main import "fmt" func main(){ var m1 map[string]string //在使用map前,需要先make,make的作用技术给map分配数据空间 m1 = make(map[string]string) m2 := map[string]string{ //使用方式二 "a1" : "q1", "a2" : "a2", } m1["s1"] = "亚索" m1["s2"] = "盖伦" fmt.Println(m1) fmt.Println(m1["s1"]) fmt.Println(m2) } ###结果### map[s1:亚索 s2:盖伦] 亚索 map[a1:q1 a2:a2]
map的增删改查
增、改
map[key] = value //没有就增加,存在就修改
删
delete(map,key)
查
map[key] //对应的value,和python的dict一样