欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

go語(yǔ)言切片slice使用細(xì)節(jié)和注意事項(xiàng)整理大全

 更新時(shí)間:2024年05月30日 10:17:06   作者:tekin  
這篇文章主要給大家介紹了關(guān)于go語(yǔ)言切片slice使用細(xì)節(jié)和注意事項(xiàng)整理的相關(guān)資料,需要的朋友可以參考下

go語(yǔ)言中切片slice的使用是最為頻繁的,效率也是最高的, 今天就給大家說(shuō)說(shuō)我們?cè)谑褂眠^(guò)程中會(huì)忽略的一些細(xì)節(jié)。

先普及一下slice的核心基礎(chǔ)知識(shí), go語(yǔ)言中的切片是引用類(lèi)型, 其底層數(shù)據(jù)的存儲(chǔ)實(shí)際上是存儲(chǔ)在一個(gè)數(shù)組 上(這個(gè)和他的數(shù)據(jù)類(lèi)型 引用 是相關(guān)的 他底層就是引用的數(shù)組), 而數(shù)組的大小一旦定義其大小就是不可改變的,

使用建議:建議大家在使用切片的時(shí)候,如果是知道大小,那就在make的時(shí)候指定大小,然后通過(guò)下標(biāo)來(lái)使用,  如果不知道大小,希望通過(guò)append來(lái)動(dòng)態(tài)擴(kuò)容,那在定義的時(shí)候就不要使用make來(lái)初始化

使用之前先初始化和分配內(nèi)存空間

slice := make([]string, 2) //定義cap容量為2的字符串切片
slice[0] = "hello"
slice[1] = "golang"

用append函數(shù)將slice當(dāng)做動(dòng)態(tài)數(shù)組使用

var x []interface{} // 定義個(gè)空接口切片,注意切片如果定義后如果是使用append函數(shù)動(dòng)態(tài)增加元素,則不需要使用make初始化分配空間,因?yàn)閍ppend函數(shù)幫我們做了這個(gè)事情。
// 如果是定義后想直接通過(guò)下標(biāo)訪問(wèn)切片,則必須使用make初始化后才能使用下標(biāo)訪問(wèn)?。?

//動(dòng)態(tài)增加元素, append會(huì)自動(dòng)幫我們初始化和分配內(nèi)存空間
x = append(x, "Hello golang")

定義切片的3種方式:

1. 從已有的數(shù)組中使用中括號(hào)[]和指定截取索引的位置來(lái)截取切片;

2. 使用 var 定義切片,然后使用append函數(shù)動(dòng)態(tài)擴(kuò)容;

3. 直接使用make構(gòu)建和初始化切片,然后通過(guò)下標(biāo)使用  注意不能越界??!

切片使用細(xì)節(jié)注意事項(xiàng)

1. 如果切片是從已有的數(shù)組截取來(lái)的, 在切片里面改變數(shù)據(jù)或者原來(lái)數(shù)組值改變的時(shí)候, 原來(lái)的數(shù)組或者截取后的切片的值也會(huì)相應(yīng)的改變,因?yàn)榍衅且玫臄?shù)組

2. 切片使用len獲取數(shù)據(jù)條數(shù), 使用cap獲取容量

切片的拷貝 注意事項(xiàng)

切片使用copy 內(nèi)置函數(shù)完成拷貝:func copy(dst, src []Type) int

dst 要拷貝到的目標(biāo)切片, src 拷貝數(shù)據(jù)的來(lái)源切片

var s4 = []int{7, 8, 9}
var ss4 = make([]int, 2) // 注意這里的創(chuàng)建的切片長(zhǎng)度, 需要大于等于要拷貝的src的長(zhǎng)度 否則就只能拷貝這里的長(zhǎng)度個(gè)元素
copy(ss4, s4)
fmt.Printf("ss2=%v\n", ss4) // ss2=[7 8] s4里面有3個(gè)元素,因?yàn)閟s4長(zhǎng)度為2 所以這里只拷貝了2個(gè)元素

總結(jié)

到此這篇關(guān)于go語(yǔ)言切片slice使用細(xì)節(jié)和注意事項(xiàng)整理大全的文章就介紹到這了,更多相關(guān)go語(yǔ)言切片slice使用注意事項(xiàng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Go泛型應(yīng)用工廠方法及泛型使用

    Go泛型應(yīng)用工廠方法及泛型使用

    這篇文章主要介紹了Go泛型應(yīng)用工廠方法及泛型使用,結(jié)合工廠方法+泛型方法來(lái)看一下泛型到底是如何在業(yè)務(wù)場(chǎng)景中使用的,需要的小伙伴可以參考一下
    2022-07-07
  • go?集成nacos注冊(cè)中心、配置中心的過(guò)程詳解

    go?集成nacos注冊(cè)中心、配置中心的過(guò)程詳解

    這篇文章主要介紹了go集成nacos注冊(cè)中心、配置中心的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2024-12-12
  • go語(yǔ)言代碼生成器code?generator使用示例介紹

    go語(yǔ)言代碼生成器code?generator使用示例介紹

    這篇文章主要為大家介紹了go語(yǔ)言代碼生成器code?generator的使用簡(jiǎn)單介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • Go語(yǔ)言中常用的基礎(chǔ)方法總結(jié)

    Go語(yǔ)言中常用的基礎(chǔ)方法總結(jié)

    這篇文章主要為大家詳細(xì)介紹了Go語(yǔ)言中常用的一些基礎(chǔ)方法,例如:使用正則表達(dá)式驗(yàn)證字符串、格式化字符串、時(shí)間的比較等等,需要的可以參考一下
    2022-09-09
  • go將request?body綁定到不同的結(jié)構(gòu)體中教程

    go將request?body綁定到不同的結(jié)構(gòu)體中教程

    這篇文章主要為大家介紹了go將request?body綁定到不同的結(jié)構(gòu)體中教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • 一步步教你打造高效可靠的Go庫(kù)

    一步步教你打造高效可靠的Go庫(kù)

    這篇文章主要介紹了一步步教你打造高效可靠的Go庫(kù)的相關(guān)資料,需要的朋友可以參考下
    2023-11-11
  • Go?代碼塊作用域變量遮蔽問(wèn)題解析

    Go?代碼塊作用域變量遮蔽問(wèn)題解析

    這篇文章主要為大家介紹了Go?代碼塊作用域變量遮蔽問(wèn)題解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • 詳解golang碎片整理之 fmt.Scan

    詳解golang碎片整理之 fmt.Scan

    本文介紹了從golang語(yǔ)言中fmt包從標(biāo)準(zhǔn)輸入獲取數(shù)據(jù)的Scan系列函數(shù)、從io.Reader中獲取數(shù)據(jù)的Fscan系列函數(shù)以及從字符串中獲取數(shù)據(jù)的Sscan系列函數(shù)的用法,感興趣的小伙伴們可以參考一下
    2019-05-05
  • Go 使用Unmarshal將json賦給struct出錯(cuò)的原因及解決

    Go 使用Unmarshal將json賦給struct出錯(cuò)的原因及解決

    這篇文章主要介紹了Go 使用Unmarshal將json賦給struct出錯(cuò)的原因及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03
  • Go 1.21新增的slices包中切片函數(shù)用法詳解

    Go 1.21新增的slices包中切片函數(shù)用法詳解

    Go 1.21新增的 slices 包提供了很多和切片相關(guān)的函數(shù),可以用于任何類(lèi)型的切片,本文通過(guò)代碼示例為大家介紹了部分切片函數(shù)的具體用法,感興趣的小伙伴可以了解一下
    2023-08-08

最新評(píng)論