golang學習(九) 切片(slice)

2021-09-11 03:03:04 字數 3131 閱讀 1699

在go 語言中,陣列是值型別,長度是固定的;而切片是引用型別,長度可動態增長。切片的內部結構包括位址、大小和容量。

特性:1.當省略開始位置時,表示從連續區域開頭到結束位置。

2.當省略結束位置時,表示從開始位置到整個連續區域結束位置。

3.兩者都省略時,與切片本身等效。

基本格式如下:

slice [開始位置:結束位置]
案例如下:

package main

import "fmt"

func main()

//建立乙個[0]到[1]的切片

fmt.println(student,student[0:2])

}

說明:通過上面的語法建立了乙個從 a [開始位置] 到a [結束位置-1] 的切片。

當開始位置和結束位置都省略時,生成的切片表示和原切片一樣的切片,案例如下:

package main

import "fmt"

func main()

fmt.println(student)

//生成與原切片一樣的切片

fmt.println(student[:])

}

執行結果如下:

方法:將切片的開始位置和結束位置都設為0

注意:這種情況生成的切片變為空。

案例:

package main

import "fmt"

func main()

fmt.println(student)

//清空所有元素

fmt.println(student[0:0])

}

執行結果如下:

切片的長度是切片中元素的個數。切片的容量是指從切片的起始元素開始到其底層陣列中的最後乙個元素的個數

案例如下:

package main

import (

"fmt"

)func main()

numberslice := numberarray[1:3]

fmt.printf("切片的長度是 %d 容量是 %d", len(numberslice), cap(numberslice))

}

執行結果:

注意:切片的長度可以動態的改變(最大為其容量)

基本格式:

make( t, len, cap )
說明:

t:切片的元素型別

len:分配元素的個數

cap: 容量是可選的,預設與長度相同

案例如下:

package main

import "fmt"

func main()

執行結果如下:

說明:b的內部儲存空間已經分配了10個,但實際使用了2個元素。另外切片不一定必須要make()函式才能使用。

說明:當空間不能容納足夠多的元素時,可以進行擴容(容量的擴充套件一般按2倍進行)

案例如下:

package main

import (

"fmt"

)func main()

fmt.println( number, "長度為", len(number), "容量為", cap(number))

//向切片中新增元素

fmt.println(number, "新長度為", len(number), "新容量為", cap(number))

}

執行結果如下:

注意:

package main

import (

"fmt"

)func main()

}

執行結果如下:

可以使用...操作符將乙個切片整個新增到另乙個切片末尾。案例如下:

package main

import (

"fmt"

)func main()

number2 := int

//在number2後面新增...表示將number2整個新增到number後面

fmt.println(newnumber)

}

執行結果如下:

go語言沒有對刪除切片元素提供專用的介面和語法,我們可以使用切片的特性刪除元素。案例如下:

package main

import "fmt"

func main()

//指定刪除位置

index := 2

//檢視刪除位置之前的元素和刪除之後的元素

fmt.println(number[:index],number[index+1:])

//切片拼接

//列印刪除後的切片

fmt.println(number)

}

執行結果:

在go語言中切片不支援 == 操作符,就是不能直接比較,唯一合法的就是和nil作比較。開發中經常會遇到需要比較兩個切片中的元素是否相等的情況,這個時候只能遍歷兩個切片中的所有元素 ,再比較。

golang 切片學習

package main 這裡只說些自己理解的,當然切片的操作遠遠不止這些。import fmt reflect 學習切片首先要明白len和cap的區別。len 是儲存資料多少,cap 是容量大小。舉個例子乙個大會堂可以容納1000人這是cap,但是實際裡面隻座了100人這是len func mai...

Golang切片學習筆記

在 golang 中可以通過多種方式建立和初始化切片。是否提前知道切片所需的容量通常會決定如何建立切片。1.1 通過 make 函式建立切片 使用 golang 內建的 make 函式建立切片,此時需要傳入乙個引數來指定切片的長度 建立乙個整型切片 其長度和容量都是 5 個元素 slice make...

三 Golang學習筆記 切片

陣列存在的問題 定義完,長度固定,不易擴充套件 切片 長度不固定,可以追加元素,可以理解成 動態陣列 但不是陣列 func main 3.使用make函式建立 make 型別,長度 初始化空間 容量 初始化和空閒 長度不能大於容量,第三個引數可以省略 s make int,3 5 fmt.print...