Go 3 數組、切片、函數

來源:互聯網
上載者:User

標籤:預設   ssi   upd   reslice   ice   副本   oss   enc   傳統   

數組

數組是實值型別:必須規定數組長度   [ ]int是切片  [5]int是一個數組

注意:數組的大小是類型的一部分。因此[5]int和[25]int是不同的類型。因此,數組不能被調整大小。切片解決此問題

a := [3]int{5, 78, 8}
var b [5]intb = a //not possible since [3]int and [5]int are distinct types
數組被分配給一個新變數時,將把原始數組的副本分配給新變數。如果對新變數進行了更改,則不會在原始數組中反映。值傳遞與參數傳遞(引用)值傳遞:拷貝引用傳遞:不是

 

Go語言中一般不直接使用數組

聲明
var array1 [5]intarray2 := [3]int{1,2,3}array3 := [...]int{1,2,3}var grid [4][5] bool
長度

通過將數組作為參數傳遞給len函數,可以獲得數組的長度。

遍曆數組:傳統
a := [...]float64{67.7, 89.8, 21, 78}    for i := 0; i < len(a); i++ { //looping from 0 to the length of the array        fmt.Printf("%d th element of a is %.2f\n", i, a[i])    }

 

遍曆數組:range
for _,v := range arr3 {      fmt.Println(v)  }for i,v := range arr3 {      fmt.Println(i,v)  }for i := range arr3 {      fmt.Println(arr3[i])  }
註:任何地方都可通過_省略變數
多維陣列

var threedim [5][10][4]int

切片

切片與數組相比,不需要設定長度,在[]中不用設定值,相對來說比較自由。

概念:

從概念上面來說slice像一個結構體,這個結構體包含了三個元素:指標,指向數組中slice指定的開始位置長度,即slice的長度最大長度,也就是slice開始位置到數組的最後位置的長度

slice本身沒有資料,是對底層array的一個view對slice所做的任何修改都將反映在底層數組中。

一個切片在未初始化之前預設為 nil,長度為 0

 文法
定義:
arr := [...]int{0,1,2,3,4,5,6}
s := arr[2,6]
updateSlice:s1 :=arr[2:]   s2 := arr[:]
Reslice: s := arr[2:6]  s = s[:3]  s = s[1:]   s = arr[:]
添加元素:s = append(s,val)  如果超越cap,系統會重新分配更大的底層數組
由於值傳遞關係,必須接收append傳回值     如果len大了,cap開始是32,後64,再128

append()

append 向slice裡面追加一個或者多個元素,然後返回一個和slice一樣類型的slice

append函數會改變slice所引用的數組的內容,從而影響到引用同一數組的其它slice。 但當slice中沒有剩 餘空間(即(cap-len) == 0)時,此時將動態分配新的數組空間。

返回的slice數組指標將指向這個空間,而原 數組的內容將保持不變;其它引用此數組的slice則不受影響

copy()

 copy 函數copy從源slice的src中複製元素到目標dst,並且返回複製的元素的個數

 

Go 3 數組、切片、函數

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.