golang语言的数组 切片和字典

packagemainimport("fmt")funcmain(){//定长为数组不定长为切片//数组vara[10]int//切片vara[]intvara[10]int//定义一个数字长度为10,存储int类型a[0]=10//存储a[1]=20a[2]=30a[3]=40fmt.Println(a[0],a[1],a[2],a[3])//通过序列打印fmt.Println(a)//打印整个数组,因为定义长度为10,而我们只存了4个,所有后面的部分将以零值填充。//运行结果10203040[10203040000000]//初始化并赋值num:=[5]int{1,2,3,4,5}//初始化并赋值fmt.Println(num)//数组遍历fori,value:=rangenum{//索引和值fmt.Println(value,i)}//数组定义时可不定义切片大小sliceOne:=[]int{1,2,3,4,5}fmt.Println(sliceOne[0],sliceOne[1],sliceOne[2])//通过开始索引和结束索引创建一个新的切片sliceTwo:=sliceOne[1:3]//返回sliceOne中索引1到索引3,但不包含3fmt.Println(sliceTwo)//运行结果:[23]//可省略开始索引,省略表示从索引0开始fmt.Println(sliceOne[:3])//返回索引0-索引3,不包含3//可省略结束索引,省略表示直到最后一个fmt.Println(sliceOne[1:])//打印索引1到最后,全部被打印出来运行结果:[2345]//同事省略开始和结束表示复制全部切片fmt.Println(sliceOne[:])//使用make初始化并设定长度与容量sliceThree:=make([]int,5,10)//表示初始化一个切片,长度为5,最大容量为10,即在内存中申请了能放置10个长度的空间,这样在有新元素插入的时候就不用再动态分配空间提高效率。fmt.Println(sliceThree)//运行结果:[00000]//使用len和cap查看切片的长度和容量fmt.Println(len(sliceThree))fmt.Println(cap(sliceThree))//运行结果:510//使用append来追加元素sliceThree=append(sliceThree,2,3,4)fmt.Println(sliceThree)//运行结果:[000001234]//多维数组vara[2][3]int=[...][3]int{{1,2,3},{4,5,6}}//注意:多维数组只有第一层可使用[...]里面的都不可以//切片合并vara=[]int{1,2,3}varb=[]int{4,5,6}a=append(a,b...)//切片容量的扩展*每次只追加一个元素,每一次都是上一次的2倍*追加的超过原来容量的1倍,就等于原来的容量+扩容元素个数的最接近的偶数*如果切片的容量大于了1024,后续就每次扩容0.25倍?//排序排序操作主要都在sort包中,导入就可以使用了。importsortsort.Ints#对整数进行排序sort.Strings#对字符串进行排序sort.Float64s#对浮点数排序//查找sort.SearchInts(a[]int,bint)从数组a中查找B,查找时会先进行排序然后在查找,返回下标indexsort.SearchFloats(a[]float64,bfloat64)sort.SearchStrings(ap[]string,bstring)//字典map//使用make来创建map//声明时不会分配内存的,需要用make初始化才能分配内存进行操作m:=make(map[string]int)//定义建值为字符串,值为整型m["first"]=1fmt.Println(m["first"])//运行结果:1m["first"]=2fmt.Println(m["first"])//运行结果:2//使用len获取map长度fmt.Println(len(m))//运行结果:1//检查map中是否包含某个建值v,ok:=m["third"]//如果包含建值third那么,v等于third对应的值,ok为true,否则v为零值,ok为falsefmt.Print(v,ok)//运行结果:0false//delete删除map中的建值对delete(m,"first")fmt.Println(m)//创建的时候初始化varmp=map[string]int{"first":1,"second":2,}//字典嵌套outer:=map[string]map[string]int{"inner1":map[string]int{"first":1,"second":2,}"inner2":map[string]int{"first":3,"second":4,}}}