日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Golang中的Map和Slice的操作技巧
Golang中的Map和Slice是兩種常用的數(shù)據(jù)結(jié)構(gòu)。Map是一種鍵值對映射的數(shù)據(jù)結(jié)構(gòu),而Slice是一個動態(tài)數(shù)組。在Go中使用map[key]value的方式定義,其中key可以是任何支持==和!=操作符的類型,value可以是任意類型的值。而Slice則是通過make函數(shù)創(chuàng)建的,它是一個動態(tài)數(shù)組,可以通過索引訪問其中的元素。

Golang中的Map

1、1 Map簡介

企業(yè)建站必須是能夠以充分展現(xiàn)企業(yè)形象為主要目的,是企業(yè)文化與產(chǎn)品對外擴展宣傳的重要窗口,一個合格的網(wǎng)站不僅僅能為公司帶來巨大的互聯(lián)網(wǎng)上的收集和信息發(fā)布平臺,創(chuàng)新互聯(lián)建站面向各種領(lǐng)域:木托盤成都網(wǎng)站設(shè)計、成都全網(wǎng)營銷推廣解決方案、網(wǎng)站設(shè)計等建站排名服務(wù)。


Map是Golang中一種特殊的數(shù)據(jù)結(jié)構(gòu),它是一個鍵值對的集合,在Golang中,Map使用map[keyType]valueType的形式定義,其中keyTypevalueType分別表示鍵和值的類型,我們可以定義一個String到int類型的Map:

m := make(map[string]int)

1、2 Map的創(chuàng)建

我們可以使用以下幾種方式創(chuàng)建Map:

使用make函數(shù)創(chuàng)建空Map:

m := make(map[string]int)

直接指定鍵值對初始化Map:

m := map[string]int{"apple": 1, "banana": 2}

使用字面量初始化Map:

m := map[string]int{"apple": 1, "banana": 2, "orange": 3}

1、3 Map的常用操作

添加鍵值對:

m["apple"] = 100

獲取鍵對應(yīng)的值:

value := m["apple"]

刪除鍵值對:

delete(m, "apple")

判斷鍵是否存在:

value, ok := m["apple"]
if ok {
    fmt.Println("存在")
} else {
    fmt.Println("不存在")
}

遍歷Map:

for key, value := range m {
    fmt.Println("key:", key, "value:", value)
}

Golang中的Slice

2、1 Slice簡介

Slice是Golang中一種特殊的數(shù)據(jù)結(jié)構(gòu),它是一個有序的、動態(tài)大小的數(shù)據(jù)集合,在Golang中,Slice使用[]interface{}或者[]T的形式定義,]interface{}表示任意類型的切片,[]T表示固定類型的切片,我們可以定義一個Int類型的Slice:

slice := []int{1, 2, 3}

2、2 Slice的創(chuàng)建與初始化

我們可以使用以下幾種方式創(chuàng)建Slice:

使用make函數(shù)創(chuàng)建空Slice:

slice := make([]int, 0) // 長度為0的空Slice,底層存儲空間為cap(0)*elemSize(0),容量為0,實際存儲空間為0字節(jié);如果不指定長度參數(shù),默認(rèn)長度為0,當(dāng)元素被添加到slice時,底層會重新分配內(nèi)存空間,如果需要頻繁地添加或刪除元素,建議使用make創(chuàng)建slice時指定其容量。slice := make([]int, 5),表示創(chuàng)建一個長度為5的空Slice,由于底層存儲空間未分配,因此實際存儲空間仍為0字節(jié),當(dāng)添加第一個元素后,底層存儲空間的大小將變?yōu)?*elemSize(4),后續(xù)添加元素時,底層存儲空間會根據(jù)當(dāng)前元素個數(shù)自動擴容,如果需要指定初始容量和容量增長因子等參數(shù),可以使用如下形式:slice := make([]int, initialCap, growthFactor),其中initialCap表示初始容量,growthFactor表示容量增長因子。slice := make([]int, 5, 1.5),表示創(chuàng)建一個長度為5的Slice,容量增長因子為1.5,當(dāng)添加第6個元素時,底層存儲空間的大小將變?yōu)?*elemSize(4)+1(擴容空間),擴容后的底層存儲空間大小為5*elemSize(4)+1,同理,后續(xù)添加元素時,底層存儲空間會根據(jù)當(dāng)前元素個數(shù)自動擴容,如果需要指定初始容量、容量增長因子以及底層存儲空間大小等參數(shù),可以使用如下形式:slice := make([]int, initialCap, growthFactor, capacity),其中capacity表示底層存儲空間大小。slice := make([]int, 5, 1.5, 64),表示創(chuàng)建一個長度為5的Slice,容量增長因子為1.5,底層存儲空間大小為64字節(jié),需要注意的是,當(dāng)?shù)讓哟鎯臻g大小不足以容納新元素時,會觸發(fā)一次realloc操作進行擴容,如果不需要指定底層存儲空間大小等參數(shù),可以使用如下形式:slice := make([]int),表示創(chuàng)建一個長度為0的空Slice,由于底層存儲空間未分配,因此實際存儲空間仍為0字節(jié),當(dāng)添加第一個元素后,底層存儲空間的大小將變?yōu)閘en(slice)*elemSize(4),后續(xù)添加元素時,底層存儲空間會根據(jù)當(dāng)前元素個數(shù)自動擴容,當(dāng)添加第n個元素時,底層存儲空間的大小將變?yōu)閘en(slice)*elemSize(4)+n*elemSize(4)(擴容空間),擴容后的底層存儲空間大小為len(slice)*elemSize(4)+n*elemSize(4),同理,后續(xù)添加元素時,底層存儲空間會根據(jù)當(dāng)前元素個數(shù)自動擴容,如果需要指定初始容量、容量增長因子以及底層存儲空間大小等參數(shù),可以使用如下形式:slice := make([]int, initialCap, growthFactor),其中initialCap表示初始容量,growthFactor表示容量增長因子。slice := make([]int, 5, 1.5),表示創(chuàng)建一個長度為5的Slice,容量增長因子為1.5,當(dāng)添加第6個元素時,底層存儲空間的大小將變?yōu)?*elemSize(4)+1(擴容空間),擴容后的底層存儲空間大小為5*elemSize(4)+1,同理,后續(xù)添加元素時,底層存儲空間會根據(jù)當(dāng)前元素個數(shù)自動擴容,如果需要指定初始容量、容量增長因子以及底層存儲空間大小等參數(shù),可以使用如下形式:slice := make([]int, initialCap, growthFactor),其中initialCap表示初始容量,growthFactor表示容量增長因子。slice := make([]int, 5, 1.5),表示創(chuàng)建一個長度為5的Slice,容量增長因子為1.5,當(dāng)添加第6個元素時,底層存儲空間的大小將變?yōu)?*elemSize(4)+1(擴容空間),擴容后的底層存儲空間大小為5*elemSize(4)+1,同理,后續(xù)添加元素時,底層存儲空間會根據(jù)當(dāng)前元素個數(shù)自動擴容,如果需要指定初始容量、容量增長因子以及底層存儲空間大小等參數(shù),可以使用如下形式:slice := make([]int),表示創(chuàng)建一個長度為0的空Slice,由于底層存儲空間未分配,因此實際存儲空間仍為0字節(jié),當(dāng)添加第一個元素后,底層存儲空間的大小將變?yōu)閘en(slice)*elemSize(4),后續(xù)添加元素時,底層存儲空間會根據(jù)當(dāng)前元素個數(shù)自動擴容,當(dāng)添加第n個元素時,底層存儲空間的大小將變?yōu)閘en(slice)*elemSize(4)+n*elemSize(4)(擴容空間),擴容后的底層存儲空間大小為len(slice)*elemSize(4)+n*elemSize(4),同理,后續(xù)添加元素時,底層存儲空間會根據(jù)當(dāng)前元素個數(shù)自動擴容,如果需要指定初始容量、容量增長因子以及底層存儲空間大小等參數(shù),可以使用如下形式:slice := make([]*T)(cap(*T)),T表示任意類型。slice := make([]*int)(cap(*int)),表示創(chuàng)建一個長度為cap(*int)的Slice,底層存儲類型為int,注意:由于底層類型不確定且動態(tài)變化,因此該方法無法保證創(chuàng)建出的Slice具有正確的類型信息,因此建議在創(chuàng)建Slice時指定其類型信息。slice := make([]*float64](len), cap(*float64)),表示創(chuàng)建一個長度為len、容量為cap的Float64類型的Slice,其中l(wèi)en表示Slice的初始長度,需要注意的是:由于Slice是一種引用類型而不是值類型,因此在使用make函數(shù)創(chuàng)建Slice時需要注意其返回值是一個指向內(nèi)部數(shù)據(jù)的指針而非實際的Slice對象本身,因此在使用完Slice后應(yīng)及時將其置為nil以釋放內(nèi)存資源:defer slice.Close() 或者 defer func() { slice = nil }(),否則可能導(dǎo)致內(nèi)存泄漏等問題,另外需要注意的是:由于Slice是一種引用類型而不是值類型

文章名稱:Golang中的Map和Slice的操作技巧
當(dāng)前URL:http://m.5511xx.com/article/dhhohpc.html