07 | 數(shù)組與切片

數(shù)組

  • 聲明數(shù)組需指定元素類型和元素個數(shù)
func TestArray(t *testing.T){
    arr := [3]int{1,2,3}
    t.Log(arr)
}
//result : [1,2,3]
  • 初始化賦值元素個數(shù)要小于,或等于指定個數(shù)。沒有初始化的元素,默認賦零值
func TestArray(t *testing.T){
    arr := [3]int{}

    t.Log(arr)
}
//result : [0,0,0]
  • 可使用...忽略設(shè)置元素個數(shù),自動根據(jù)初始化元素分配對應(yīng)長度數(shù)組
func TestArray(t *testing.T){
    arr := [...]int{}
    arr2 := [...]int{1,0}
    t.Log(arr,arr2)
}
//result : [] [1,0]
  • 使用cap() ,len()查看數(shù)組大小,go語言數(shù)組不能擴容
func TestArray(t *testing.T){
    arr := [...]int{1,0}
    t.Log(arr,cap(arr),len(arr))
}
//result : [1 0] 2 2
  • 函數(shù)參數(shù)和返回值定義必須指定具體元素個數(shù)
func  getLen(arr [...]int) int {
    return len(arr)
}

func TestArray(t *testing.T){
    arr := [...]int{1,0}
    t.Log(getLen(arr))
}
//result : use of [...] array outside of array literal
func  getLen(arr [2]int) int {
    return len(arr)
}

func TestArray(t *testing.T){
    arr := [...]int{1,0}
    t.Log(getLen(arr))
}
//result : 2

原因: ... 自動推導(dǎo)個數(shù)必須在編譯時確定,函數(shù)行參無法在編譯時確定元素個數(shù)?
所以Go語言中常用的是函數(shù)傳切片而不是傳數(shù)組

  • 支持多維數(shù)組

切片

A slice, on the other hand, is a dynamically-sized, flexible view into the elements of an array

  • 聲明切片幾種方式
  1. 直接聲明
func TestSlice(t *testing.T) {
    var slice []int
    t.Log(reflect.TypeOf(slice))
}
//result : []int
  1. 聲明并賦字面值
func TestSlice(t *testing.T) {
    slice := []int{1,2,3,4}
    t.Log(slice)
    t.Log(reflect.TypeOf(slice))
}
//result: [1,2,3,4] []int
  1. 從數(shù)組或切片中切出
func TestSlice(t *testing.T) {
    arr := [...]int{1,2,3,4}
    slice := arr[0:3]
    slice2 := slice[1:2]
    t.Log(slice,slice2)
    t.Log(reflect.TypeOf(slice),reflect.TypeOf(slice))
}
  • 不允許創(chuàng)建容量比長度小的切片
  • 切片只有底層數(shù)組有關(guān)
  • 使用append增加元素 切片允許擴容
  • 指定第三個參數(shù)限制切片容量
  • 空切片和nil 切片 if==nil

推薦閱讀

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 切片(slice)是 Golang 中一種比較特殊的數(shù)據(jù)結(jié)構(gòu),這種數(shù)據(jù)結(jié)構(gòu)更便于使用和管理數(shù)據(jù)集合。切片是圍繞動態(tài)...
    51reboot閱讀 28,863評論 2 10
  • 切片(slice)是 Golang 中一種比較特殊的數(shù)據(jù)結(jié)構(gòu),這種數(shù)據(jù)結(jié)構(gòu)更便于使用和管理數(shù)據(jù)集合。切片是圍繞動態(tài)...
    小孩真笨閱讀 1,219評論 0 1
  • 數(shù)組 和C語言一樣,Go語言中也有數(shù)組的概念, Go語言中的數(shù)組也是用于保存一組相同類型的數(shù)據(jù) 和C語言一樣,Go...
    極客江南閱讀 1,274評論 0 2
  • 數(shù)組Go語言中的數(shù)組是定長的同一類型數(shù)據(jù)的集合,數(shù)組索引是從0開始的。數(shù)組有以下幾種創(chuàng)建方式 以下是一些特殊數(shù)組 ...
    小杰的快樂時光閱讀 1,970評論 0 0
  • 我是雅雅,日記星球427號星寶寶,正在參加日記星球第15期21天蛻變之旅,這是我的第2篇日記。 今天是個美好的日子...
    雅雅_b83c閱讀 238評論 2 3

友情鏈接更多精彩內(nèi)容