真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

go語(yǔ)言中的切片如何定義及使用

這篇文章主要介紹“go語(yǔ)言中的切片如何定義及使用”的相關(guān)知識(shí),小編通過(guò)實(shí)際案例向大家展示操作過(guò)程,操作方法簡(jiǎn)單快捷,實(shí)用性強(qiáng),希望這篇“go語(yǔ)言中的切片如何定義及使用”文章能幫助大家解決問(wèn)題。

從網(wǎng)站建設(shè)到定制行業(yè)解決方案,為提供做網(wǎng)站、網(wǎng)站設(shè)計(jì)服務(wù)體系,各種行業(yè)企業(yè)客戶提供網(wǎng)站建設(shè)解決方案,助力業(yè)務(wù)快速發(fā)展。成都創(chuàng)新互聯(lián)將不斷加快創(chuàng)新步伐,提供優(yōu)質(zhì)的建站服務(wù)。

go語(yǔ)言中的切片如何定義及使用

golang切片(slice)

(1)切片的定義

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

切片是一個(gè)引用類型,它的內(nèi)部結(jié)構(gòu)包含地址、長(zhǎng)度和容量。切片一般用于快速地操作一塊數(shù)據(jù)集合。

創(chuàng)建切片跟創(chuàng)建數(shù)組唯一的區(qū)別在于 Type 前的“ [] ”中是否有數(shù)字,為空,則代表切片,否則則代表數(shù)組。因?yàn)榍衅情L(zhǎng)度可變的

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

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

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

(2)使用make函數(shù)創(chuàng)造切片

這里就開(kāi)始對(duì)應(yīng)上前面的說(shuō)法,切片的容量的可變的,用make函數(shù)就可以實(shí)現(xiàn),切片的本質(zhì)就是對(duì)底層數(shù)組的封裝,它包含了三個(gè)信息:底層數(shù)組的指針、切片的長(zhǎng)度(len)和切片的容量(cap)。

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

(3)切片的遍歷

sc:=[]int{1,2,3}
//普通for循環(huán)遍歷
for i:=0;i

(4)append()方法

Go語(yǔ)言的內(nèi)建函數(shù)append()可以為切片動(dòng)態(tài)添加元素。 可以一次添加一個(gè)元素,可以添加多個(gè)元素,也可以添加另一個(gè)切片中的元素(后面加…)。

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

(5)copy方法

Go語(yǔ)言內(nèi)建的copy()函數(shù)可以迅速地將一個(gè)切片的數(shù)據(jù)復(fù)制到另外一個(gè)切片空間中,copy()函數(shù)的使用格式如下:

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

這里有個(gè)問(wèn)題需要注意的是,在實(shí)際開(kāi)發(fā)中存在這樣的問(wèn)題

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其實(shí)都指向了同一塊內(nèi)存地址。
修改b的同時(shí)a的值也會(huì)發(fā)生變化。
*/

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

Go語(yǔ)言中并沒(méi)有刪除切片元素的專用方法,我們可以使用切片本身的特性來(lái)刪除元素。 代碼如下:

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

關(guān)于“go語(yǔ)言中的切片如何定義及使用”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,小編每天都會(huì)為大家更新不同的知識(shí)點(diǎn)。


網(wǎng)站標(biāo)題:go語(yǔ)言中的切片如何定義及使用
文章源于:http://weahome.cn/article/geschs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部