var ar [10]byte {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'}
var a, b []byte
a = ar[2:5]
b = ar[3:5]
直接创建
myslice1 := make([]int, 5)
myslice2 := make([]int, 5, 10) //初始个数5,预留10个元素的存储空间
myslice3 := []int{1,2,3,4,5}
2.元素访问
for i:=0; i<len(mySlice); i++ {
fmt.Println(i, mySlice[i])
}
for i, v := range mySlice {
fmt.Println(i, v)
}
3.其他操作
大小和容量
len获取slice的长度
cap获取slice的最大容量
动态增减元素
append想slice里面追加一个或者多个元素,然后返回一个和slice一样类型的slice
//append
mySlice = append(mySlice, 1, 2, 3) //增加三个元素
mySlice = append(mySlice, mySlice2) //增加另一个
注意,append会改变slice所引用的数组的内容,从而影响到引用统一数组的其他slice,
但当slice中没有剩余空间,此时动态分配新的数组空间返回的slice数组指针将指向这个空间,
而原数组的内容将保持不变,其他引用此数组的slice不受影响(坑,可能引入bug)
内容复制
copy,从源slice的src中复制到目标dst,并且返回复制元素的个数
copy(dst, source) //会按短的个数复制
slice1 := []int{1,2,3,4,5}
slice2 := []int{5,4,3}
copy(slice2, slice1) //复制slice1前三个 1 -> 2
copy(slice1, slice2) //复制slice2的前三个 2 -> 1
切片
默认开始位置0,ar[:n]等价于ar[0:n]
第二个序列默认是数组长度 ar[n:] 等价于 ar[n:len(ar)]
从一个数组直接获取slice,可以是ar[:]
slice是引用类型,所以当改变其中元素的时候,其他的所有引用都会改变
aSlice = array[3:7]
bslice = aSlice[:3]
三.Map
Python中字典的概念
map是无序的,长度不固定,内置的len可以用于map,可以方便的修改
1.声明&赋值
map[keyType]valueType
var m map[string] PersonInfo
m = make(map[string] personInfo[, 100])
var numbers map[string]int
or
numbers := make(map[string]int)
numbers["one"] = 1
初始化一个字典
2.元素访问
rating := map[string]float32 {"c":5, "Go":4.5}
csharpRating, ok := rating["C#"]
if ok {
fmt.Println("get the value")
} else{
fmt.Println("error")
}
3.基本操作
赋值
m["1234"] = PersonInfo{}
删除
delete(m, "1234")
四.其他










