Golang-Array-Slice-Map

介绍Go三种数组结构

Let‘s Go!


Array

Array(数组)是固定长度,相同类型的集合,因为是固定长度,因此大小不能改变.

 1.1.创建Array
 有两种初始化方式
      1.1.1.固定长度
           var a [3]int
      
      1.1.2.自动统计长度
           var a [...]int{1,2,3}
           中括号用...代替长度值,就会自动元素个数并赋值长度

Slice

Slice(切片)是非固定长度,相同类型的集合,如果有新元素加入,Slice会增加长度,并且Slice总是指向一个底层的Array,是一个指向Array的指针

 2.1.创建一个长度为10,空的Slice
      slice:=make([]int,10)
 
 2.2.创建一个非空的slice
      slice:=[]int{1,2,3}
      注意:这里很容易搞错,上面是slice,下面是array
      slice:=[...]int{1,2,3}

      差别就是在于中括号中的数字,有数字就是array,没有就是slice
 
 2.3.创建一个Array,并且初始化Slice
      var a [...]int{1,2,3}
      slice:=[1:3]
 
 各种例子  a:=[...]int{1,2,3,4,5}  //从数组a中取出大于2,小于等于4的数字  s1:=a[2:4]

//从数组a中取出大于1,小于等于5的数字 s2:=a[1:5]

//用a中所有元素创建slice,这是a[0:len(a)]的简化写法 s3:=a[:]

//从序号0到3创建,这是a[0:4]简化写法,得到1,2,3,4 s4:=a[:4]

//从s2创建slice,注意s5的指针扔向指向a s5:=s2[:]

   2.4.追加slice元素  s0:=[]int{1,2}  //向s0中追加元素3  s1:=append(s0,3)  //向s0中追加多个元素  s2:=append(s0,3,4,5)  //向S0中追加一个slice  s3:=append(s0,s2...)

   2.5.复制slice元素
    a:=[...]int{1,2,3,4,5}

var s1=make([]int,6) //copy(target,src),src:源数组,target目标数组,返回函数是复制了多少个元素 s2:=copy(s1,a[0:]) println(“s2”,s2);

Map

 Map可以理解为是一个有索引的数组,一般定义形式为map[from type(key type)]to type(value type)
 monthDays:= map[ string] int {
    "Jan" :31,"Feb" :30,"Mar" :31,
    "Apr" :30,"May" :30,"Jun" :30,//<<<<<最后这个逗号是必须的!
 }
 3.1.读取
 println( "May:" ,monthDays["May" ]);

 3.2.增加元素
 monthDays[ "Dec"]=29

 3.3.删除元素
 delete(monthDays,"May")

 3.4.检查元素是否存在
 var value int //<<<接收value
 var isExist bool//<<<返回true/false标识是否存在
 value,isExist =monthDays["Jan"]

 另外一种方式
 value,isExist:=monthDays["Jan"]

参考文献

http://www.cnblogs.com/yjf512/archive/2012/06/14/2549929.html

Written on June 10, 2013