91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

go語言中的切片如何定義及使用

發布時間:2022-07-05 09:59:49 來源:億速云 閱讀:446 作者:iii 欄目:編程語言

這篇文章主要介紹“go語言中的切片如何定義及使用”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“go語言中的切片如何定義及使用”文章能幫助大家解決問題。

go語言中的切片如何定義及使用

golang切片(slice)

(1)切片的定義

切片(Slice)是一個擁有相同類型元素的可變長度的序列。它是基于數組類型做的一層封裝。它非常靈活,支持自動擴容。

切片是一個引用類型,它的內部結構包含地址、長度和容量。切片一般用于快速地操作一塊數據集合。

創建切片跟創建數組唯一的區別在于 Type 前的“ [] ”中是否有數字,為空,則代表切片,否則則代表數組。因為切片是長度可變的

var a []string  //聲明一個字符串切片
var b = []int{1,2,3} //聲明一個整數類型切片并初始化
var c = []bool{false,true} //聲明一個bool類型并且初始化

其實在實際情況下,很多時候都是理解成:切片是數組的一部分

num:=[3]int{0,1,2}
//:前后表示數組內部的索引
sc1:=num[:] //獲取數組的全部
sc2:=num[0:2] //左閉右開,取到的是[0,1]
sc3:=num[1:] //取到的是[2]
sc4:=num[:1]  //取到的是[0]

(2)使用make函數創造切片

這里就開始對應上前面的說法,切片的容量的可變的,用make函數就可以實現,切片的本質就是對底層數組的封裝,它包含了三個信息:底層數組的指針、切片的長度(len)和切片的容量(cap)。

// make([]T, size, cap)
sc=make([]int,2,10)
fmt.Println(sc) // [0 0]
fmt.Println(len(sc)) // len表示切片存儲元素的長度
fmt.Println(cap(sc)) // cap表示最大可以存儲的容量

(3)切片的遍歷

sc:=[]int{1,2,3}
//普通for循環遍歷
for i:=0;i<len(sc);i++{
	fmt.Println(s[i])
}
//for range遍歷
for index,value:=range s{
	fmt.Println(index,value)
}

(4)append()方法

Go語言的內建函數append()可以為切片動態添加元素。 可以一次添加一個元素,可以添加多個元素,也可以添加另一個切片中的元素(后面加…)。

var s1 []int  //定義切片s1
s1 = append(s1,1)  //在切片s1后面添加一個1的元素
s1 = append(s1,2,3,4) //在切片s1后面繼續添加2,3,4
s2:=[]int{5,6,7}  //定義切片s2
s1 = append(s1,s2) //把切片s2中的元素追加到切片s1中

(5)copy方法

Go語言內建的copy()函數可以迅速地將一個切片的數據復制到另外一個切片空間中,copy()函數的使用格式如下:

a:=[]int{1,2,3,4,5}
b:=make([]int,5,5)
copy(b,a) //把a切片中的元素copy到b切片中的元素
fmt.Println(b) //[1,2,3,4,5]
b[0]=1000
fmt.Println(b) // [1000,2,3,4,5]

這里有個問題需要注意的是,在實際開發中存在這樣的問題

a := []int{1, 2, 3, 4, 5}
b := a
fmt.Println(a) //[1 2 3 4 5]
fmt.Println(b) //[1 2 3 4 5]
b[0] = 1000
fmt.Println(a) //[1000 2 3 4 5]
fmt.Println(b) //[1000 2 3 4 5]
/*
由于切片是引用類型,所以a和b其實都指向了同一塊內存地址。
修改b的同時a的值也會發生變化。
*/

(6)巧妙刪除切片中的元素

Go語言中并沒有刪除切片元素的專用方法,我們可以使用切片本身的特性來刪除元素。 代碼如下:

// 從切片中刪除元素
a := []int{30, 31, 32, 33, 34, 35, 36, 37}
// 要刪除索引為2的元素
a = append(a[:2], a[3:]...)
fmt.Println(a) //[30 31 33 34 35 36 37]
/*
總結一下就是:要從切片a中刪除索引為index的元素,
操作方法是a = append(a[:index], a[index+1:]...)
*/

關于“go語言中的切片如何定義及使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

通辽市| 镇巴县| 金坛市| 巴林右旗| 新巴尔虎左旗| 弥勒县| 丘北县| 武城县| 长岛县| 太康县| 闸北区| 阳江市| 新建县| 会泽县| 溧阳市| 靖西县| 永宁县| 灌云县| 佛山市| 姚安县| 正安县| 定结县| 河东区| 家居| 莱芜市| 治县。| 江西省| 崇义县| 望江县| 明溪县| 巴林右旗| 额尔古纳市| 永康市| 武邑县| 武定县| 双鸭山市| 和平区| 荥阳市| 左权县| 叙永县| 伊金霍洛旗|