标签:go
這節課我們來講解數組,切片和map,或許您是從其他語言轉到GO語言這邊的,那麼在其他語言的影響下您可能會不太適應GO語言的數組,因為GO語言把數組給拆分成了array,slice和map,接下來的時間讓我們一起研究一下這三者的差異以及用法.首先我們說一下array的部份:a1:=[2]int{} //聲明一個數組,不賦予初始值,所以數組中每一個元素的值都是int的初值 a2:=[2]int{1,2} //聲明一個數組,并賦予初始值 a3:=[2]int{1:2} //聲明一個數組,給[1]賦初始值 fmt.Println(a1); fmt.Println(a2); fmt.Println(a3); p1:=&a1 //取得a1這個數組的指針 fmt.Println(p1); b:=[3]string{"aa","bb","cc"} //聲明一個string類型的數組,并賦予初始值 c:=[...]string{"aa","bb","cc"} //聲明一個數組,不設定長度,用三個點告訴GO語言自己計算數組長度 fmt.Println(b); fmt.Println(c); fmt.Println(b==c); //比較兩個數組是否相同 c[1]="BB" //修改[1]的值 fmt.Println(b==c); //比較兩個數組是否相同 fmt.Println(cap(c)); //取得數組容量 fmt.Println(len(c)); //取得數組長度 //array的鍵名必須是數字或字節 d:=[...]int{96:3,'a':4} //用字符作為鍵名,因為每個字符實際上是對應了一個int型的序號,所以其實鍵名還是int型的 fmt.Println(d); e:=[2][3]int{{1,1,1},{2,2,2}} //聲明一個二維數組 fmt.Println(e); f:=[...][3]int{{1,1,1},{2,2,2}} //聲明一個多維數組,維數讓GO語言來計算 fmt.Println(f); p:=new([4]int) //這是另外一種聲明數組的方法,可以用new關鍵字,但是這種聲明方法會返回指向數組的指針 fmt.Println(p);
//s=make([]int,3,5) //這是標准的定義方式,定義切片的時候同時分配內存 //fmt.Println(s); a:=[...]int{1,2,3,4,5,6,7,8,9,0} fmt.Println(a); s:=[]int{} //定義一個切片 fmt.Println(s); s=a[5:] //讓該切片指向數組a,同時為其賦值 fmt.Println(s); x:=a[4:9] fmt.Println("x的值是:",x); a[7]=99 //改變數組的某個值 fmt.Println(s); //打印切片,發現值也變了 fmt.Println("x的值是:",x); //此時切片的值也被改變了 s=a[:] //取得所有的元素 fmt.Println(s);
var m1 = map[string]float64{"Bell Labs": 40.68433,"Google":37.42202} m1["new"]=1.01 //新增鍵值對 fmt.Println("三個元素:",m1) delete(m1,"new") fmt.Println("兩個元素:",m1) fmt.Println(m1); //此時鍵["new"]已經不存在了 for k, v := range m1 { //迭代遍歷map fmt.Printf("m1[%s]=%f\n", k, v) } fmt.Printf("m1的長度是 %d \n", len(m1)) m := make(map[string]int) //用make建立map m["k1"] = 7 m["k2"] = 13 fmt.Println("map:", m)
标签:go
原文地址:http://blog.csdn.net/sibang/article/details/38758191