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

go語言切片slice使用細節(jié)和注意事項整理大全

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

go語言中切片slice的使用是最為頻繁的,效率也是最高的, 今天就給大家說說我們在使用過程中會忽略的一些細節(jié)。

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

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

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

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

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

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

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

定義切片的3種方式:

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

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

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

切片使用細節(jié)注意事項

1. 如果切片是從已有的數(shù)組截取來的, 在切片里面改變數(shù)據(jù)或者原來數(shù)組值改變的時候, 原來的數(shù)組或者截取后的切片的值也會相應(yīng)的改變,因為切片是引用的數(shù)組

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

切片的拷貝 注意事項

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

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

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

總結(jié)

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

相關(guān)文章

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

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

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

    go?集成nacos注冊中心、配置中心的過程詳解

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

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

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

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

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

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

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

    一步步教你打造高效可靠的Go庫

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

    Go?代碼塊作用域變量遮蔽問題解析

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

    詳解golang碎片整理之 fmt.Scan

    本文介紹了從golang語言中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出錯的原因及解決

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

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

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

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

最新評論