go語言之切片

2021-09-01 20:23:57 字數 1333 閱讀 8193

go語言陣列和切片的異同:

go 語言切片是對陣列的抽象。

go 陣列的長度不可改變,在特定場景中這樣的集合就不太適用,

go中提供了一種靈活,功能強悍的內建型別切片(「動態陣列」),

與陣列相比切片的長度是不固定的,可以追加元素,在追加時可能使切片的容量增大。

下面看具體例項

package main

import (

"fmt"

)func myprint(a int)

func main()

fmt.println(sli1)

// 使用make定義切片 第乙個引數表示型別,第二個引數表示長度

var sli2 = make(int,5)

fmt.println(sli2)

myprint(sli2)

// 使用make定義切片,並定義容量

var sli3 = make(int,5,10)

sli3 = int // 發現切片可以被增加容量

// sli3 = int,

// ,

// }

myprint(sli3)

// 定義並初始化切片

var sli4 = int

// go的快捷方法

sli5 := int

myprint(sli4)

myprint(sli5)

// 切片的擷取和陣列一樣

myprint(sli5[:2])

// 如果定義的空切片;那麼返回的就是 空 nil;在go語言中空就是nil

var sli6 int

if sli6 == nil

myprint(sli5)

// copy(sli5,sli4)

// myprint(sli5)

copy_sli := make(int,len(sli5),cap(sli5)*2)

copy(copy_sli,sli5) // copy陣列sli5到copy_sli中

copy(copy_sli,sli4)

fmt.println(copy_sli)

// 使用range遍歷陣列;會返回陣列的索引和值;注意如果不想使用某乙個返回值,需要使用 下劃線 _ 站位

for index,value := range copy_sli

// 忽略使用返回index索引的例項

for _,value := range copy_sli

// 忽略使用返回value的例項

for index,_ := range copy_sli

}

go語言之陣列與切片

都屬於集合類的型別,它們的值用來儲存某一型別的值。本質上來說,我們可以把切片看做是對陣列的一層簡單的封裝,每個切片的底層資料結構都是陣列,它可以看作是對陣列某個連續片段的引用,這裡需要注意的幾點是 我們可以通過切片字面量表示式int和內建make函式make int,5,6 初始化乙個切片,也可以通...

詳細介紹Go語言之陣列與切片

目錄 陣列是同一型別元素的集合,可以放多個值,但是型別一致,記憶體中連續儲存 go 語言中不允許混合不同型別的元素,而且陣列的大小,在定義階段就確定了,不能更改 定義乙個大小為3的string型別和int8型別的陣列,裡面可以放3個字串和3個數字 var names 3 string var age...

Go語言切片

go語言切片 go語言切片是對陣列的抽象 go 陣列的長度不可改變,在特定場景中這樣的集合就不太適用,go中提供了一種靈活,功能強悍的內建型別切片 動態陣列 與陣列相比切片的長度是不固定的,可以追加元素,在追加時可能使切片的容量增大。宣告乙個未指定大小的陣列來定義切片 var identifier ...