Go語言中slice的用法例項分析

2022-09-24 23:33:13 字數 1447 閱讀 7973

slice 指向陣列的值,並且同時包含了長度資訊。

t 是乙個元素型別為 t 的 slice。

複製** **如下:

package main

import "fmt"

func main()

fmt.println("p ==", p)

for i := 0; i < len(p); i++

}slice 可以重新切片,建立乙個新的 slice 值指向相同的陣列。

表示式複製** **如下:

s[lo:hi]

表示從 lo 到 hi-1 的 slice 元素,含有兩端。 程式設計客棧因此

複製** **如下:

s[lo:lo]

是空的,而

複製** **如下:

s[lo:lo+1]

有乙個元素。

複製** **如下:

package main

import "fmt"

func main()

fmt.println("p ==", p)

fmt.println("p[1:4] ==", p[1:4])

// missing low index implies 0

fmt.println("p[:3] ==", p[:3])

// missing high index implies len(s)

fmt.println("p[4:] ==", p[4:])

}slice 由函式 make 建立。這會分配乙個零長度的陣列並且返回乙個 slice 指向這個陣列:

複製** **如下:

a := make(int, 5)  // len(a)=5

程式設計客棧;   

slice 有長度和容程式設計客棧量。slice 的容量是底層陣列可以增長的最大長度。

為了指定容量,可傳遞第三個引數到 make:

複製** **如下:

b := make(int, 0, 5)

// len(b)=0, cap(b程式設計客棧)=5

slice 可以通過「重新切片」來擴容(增長到容量上限):

複製** **如下:

b = b[:cap(b)] // len(b)=5, cap(b)=5

b = b[1:]      // len(b)=4, cap(b)=4

package main

import "fmt"

func main()

func printslice(s string, x int)

slice 的零值是 nil。

乙個 nil 的 slice 的長度和容量是 0。

複製** **如下:

package main

import "fmt"

func main()

本文標題: go語言中slice的用法例項分析

本文位址:

go語言中slice的實現

slice是我們使用go語言時最經常使用的資料結構,所以我們還是有必要研究一下它的實現的,尤其是slice的擴容,具體實現參考src runtime slice.go。slice定義 type slice struct根據growslice函式的名稱,可以很容易的猜到這就是slice擴容的實現。if...

Go語言中Slice(切片)初探

最近上課學習go語言,看go語言指南,裡面說 乙個 slice 會指向乙個序列的值,並且包含了長度資訊,為了指定容量,可傳遞第三個引數到 make。感覺有些懵比,指向乙個序列的值?指定容量?我就在go指南上互動的地方做了點嘗試。本人蒟蒻,如有錯誤,希望大佬指出的時候不要激動。乙個slice 切片 是...

Go語言中陣列和slice的區別

go語言中陣列是具有固定長度而且擁有零個或者多個相同或相同資料型別元素的序列。由於陣列長度固定,所以在go語言比較少直接使用。而slice長度可增可減,使用場合比較多。更深入的區別在於 陣列在使用的過程中都是值傳遞,將乙個陣列賦值給乙個新變數或作為方法引數傳遞時,是將源陣列在記憶體中完全複製了乙份,...