数组定义:var 数组名 [数组长度] 数组元素类型。
访问数组可以通过下标:如 a[4]
数组长度获取:len(a)
数组长度固定,不可以更改。
切片定义:
s:=make([]string,3) //指明切片元素类型,长度
s[0]="a"
s[1]="b"
s[2]="c" //通过索引赋值
s = append(s,"d")
s = append(s,"e","f") //通过append添加元素 需要将返回值赋给原切片
c:=make([]string,3)
copy(c,s) //拷贝数组
//支持像python的切片 但是不支持负数索引
fmt.Println(s[2:5]) //访问索引2到索引4的元素
fmt.Println(s[:5]) //访问索引1到索引4的元素
fmt.Println(s[2:]) //访问索引2到索引4的元素
切片内部实现是一个数组+指针+长度记录+定义的容量,当需要扩容时会产生一个新数组。
map: 无序的,输出时是随机的
c:=make(map[string]int) //方括号中是key的类型 后面是值类型。
c["abc"]:= 6 //赋值
delete(c,"abc") //删除键值对
//判断是否含有key
res,ok=m["unknow"] //因为key不存在 所以res=0 ok=false
三种集合都支持for range型访问。
语法 for k,v := range 集合名称{ //其中k为索引值/键值 v元素对应值 可以用下划线占位忽略。
}