【轉】 golang slice array

來源:互聯網
上載者:User

標籤:

1. array
  同一類型資料的集合
    var arr [n]type    //聲明type類型一維數組
    var arr [m][n]type //聲明type類型二維數組
    多維陣列以此類推
    也可以用 := 聲明
    arr := [n]type{元素1[,元素2, ...]} 其中n可以用 "..." 三個點表示,系統會根據元素個數來確定
  下標只能為 int 類型,而 php 還支援 string 類型的下標
  1.1 數組長度 len(arr)
    註:數組長度在定義後就不可變
  1.2 遍曆:
    a
. 迴圈通過過數組下標訪問 arr[0] ~ arr[(len(arr))]
    b. range arr, 有兩個傳回值 第一個為數組下標,第二個為元素的值,與php遍曆數組相似

[plain] view plaincopyprint?
  1. for k, v := range array {  
  2.     fmt.Printf("arr[%d] = %d \t", k, v)  
  3. }  
[php] view plaincopyprint?
  1. foreach ($arr as $k => $v) {  
  2.     printf("arr[%d] = %d \t", $k, $v);  
  3.     //echo ‘$arr[‘ . $k . "] = " . $v . "\t";  
  4. }  

  1.3 數組在賦值與傳遞參數時,都會產生一個數組副本,而不是使用它的指標

2. slice
  在定義 array 時,其長度是固定的,並且 array 是一個實值型別
  而 slice 是一個可變的數組,但是一個參考型別
  2.1 產生slice的三種方式
    a
. 聲明與 array 一樣,不過不需要指定長度
    var slice1 []int
    slice2 := []int {元素1[, 元素2, ...]}
    b. 從數組(或者切片或者字串)中擷取 arr[i:j] i=數組的開始位置,j=結束位結果,j-i=切片的長度,i和j都可以省略,省略時 i=0, j=len(arr),i是從0開始,j是從1開始
      a b c d e f
    i 0 1 2 3 4 5
    j 1 2 3 4 5 6

[plain] view plaincopyprint?
  1. slice1 := arr[:]    //arr[0:6]/arr[0:]  
  2. slice2 := arr[1:1]  //[]  
  3. slice4 := arr3[1:3] //b c  
  4. slice5 := arr3[:5]  // = arr3[0:5]  

    c. make
    slice1 := make([]int, 5, 10)
    len(slice1) = 5, cap(slice1) = 10, 元素的初始值為0
  2.2 相關函數
    len
(slice): 返回 slice 的元素個數(長度)
    cap(slice): 返回 slice 的分配空間大小
    append(slice1, slice2...): 把 slice2 追加到 slice1 產生新的 slice, 若 slice2 是變數時,不能省略...,相當於 append(slice1, a[, b, ...])
    copy(目標slice, 源slice): 以最小的切片元素個數為準,將源 slice 複製到 目標 slice
  2.3 cap - len = 0 時,系統將動態分配新的數組空間,即切片會自動處理儲存空間不足的問題
  2.4 遍曆與 array 一樣
  2.5 在傳遞參數時,傳遞的為指標

【轉】 golang slice array

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.