golang數組操作


一、數組

golang的數組、切片,和py的列表相似,但是他們要求其中的元素必須是同一種數據類型。他們都可以通過索引下標訪問和修改。

golang數組和切片的區別:

  golang數組,長度固定。切片,長度及容量自動擴容。

  golang數組,是值類型數據。切片,是引用類型數據。

  golang數組,不需要使用make初始化。切片,可以使用make初始化,也可以不使用make初始化,直接使用。

值類型:基本數據類型int, float,bool, string以及數組和struct

  值類型:變量直接存儲值,內容通常在棧中分配

  var i = 5     i -----> 5

引用類型:指針,切片,map,chan等都是引用類型

  引用類型:變量存儲的是一個內存地址,這個內存地址存儲最終的值,內容通常在堆上分配,通過GC回收

  ref r ------> 內存地址 -----> 值

二、數組定義

1.var聲明數組

1.var聲明數組
var 變量名稱 [數組長度]數據類型
var balance1 [10] float32
2.var聲明數組,並初始化
var 變量名稱 = [數組長度]數據類型{} var balance2
= [10] float32{}
3.var聲明數組,並初始化,不確定長度 var balance3 = [...] float32{1.1}

 

 

2.推導式聲明數組

1.推導式聲明數組,並初始化
balance4 := [10] float32{}
balance5 := [10] float32{1.1}
2.推導式聲明數組,並初始化,不確定長度 balance5 := [...] float32{1.1}

 

 

 

 

三、遍歷

1.方式1:

arr := [4]string{"a","ab","abc"}
for i:=0; i<len(arr); i++ {
     fmt.Println(i, arr[i])  
}

 

2.方式2:

arr := [4]string{"a","ab","abc"}
for index, value := range arr {
    fmt.Println(index, value)
}

 

3.驗證數組式值類型

arr1 := [3]int{1,2,3}
arr2 := arr1
arr2[0] = 100
fmt.Println(arr1)   //[1 2 3]
fmt.Println(arr2)   //[100 2 3]

 

4.驗證切片式引用類型

a1 := []int{1,2,3}
a2 := a1
a2[0] = 100
fmt.Println(a1)   //[100 2 3]
fmt.Println(a2)   //[100 2 3]

 

 

四、二維數組

a := [3][4]int{  
 {0, 1, 2, 3} ,   /*  第一行索引為 0 */
 {4, 5, 6, 7} ,   /*  第二行索引為 1 */
 {8, 9, 10, 11},   /* 第三行索引為 2 */
}
// 注意:以上代碼中倒數第二行的 } 必須要有逗號,因為最后一行的 } 不能單獨一行,也可以寫成這樣:
a := [3][4]int{  
 {0, 1, 2, 3} ,   /*  第一行索引為 0 */
 {4, 5, 6, 7} ,   /*  第二行索引為 1 */
 {8, 9, 10, 11}}   /* 第三行索引為 2 */


    // 創建二維數組
    sites := [2][2]string{}

    // 向二維數組添加元素
    sites[0][0] = "Google"
    sites[0][1] = "Runoob"
    sites[1][0] = "Taobao"
    sites[1][1] = "Weibo"

    // 顯示結果
    fmt.Println(sites)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM