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

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

golang中map的概念是什么

本文小編為大家詳細(xì)介紹“golang中map的概念是什么”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“golang中map的概念是什么”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來(lái)學(xué)習(xí)新知識(shí)吧。

創(chuàng)新互聯(lián)公司是專(zhuān)業(yè)的溫嶺網(wǎng)站建設(shè)公司,溫嶺接單;提供成都網(wǎng)站建設(shè)、成都做網(wǎng)站,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專(zhuān)業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行溫嶺網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專(zhuān)業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專(zhuān)業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

在golang中,map是一種特殊的數(shù)據(jù)結(jié)構(gòu),是一個(gè)key(索引)和value(值)形式的無(wú)序的集合,也可以稱(chēng)為關(guān)聯(lián)數(shù)組或字典;map是一種能夠快速尋找值的理想結(jié)構(gòu),是能夠快速根據(jù)給定key,找到對(duì)應(yīng)的value的數(shù)據(jù)結(jié)構(gòu)。

Go語(yǔ)言中 map 是一種特殊的數(shù)據(jù)結(jié)構(gòu),一種元素對(duì)(pair)的無(wú)序集合,pair 對(duì)應(yīng)一個(gè) key(索引)和一個(gè) value(值),所以這個(gè)結(jié)構(gòu)也稱(chēng)為關(guān)聯(lián)數(shù)組或字典,這是一種能夠快速尋找值的理想結(jié)構(gòu),給定 key,就可以迅速找到對(duì)應(yīng)的 value。

Golang 的 map 的 key 可以是任何可以使用 == 進(jìn)行比較的 數(shù)據(jù)類(lèi)型,比如 int、string、bool 等,value 可以是任意的類(lèi)型。

map 是一個(gè)無(wú)序的數(shù)據(jù)結(jié)構(gòu),因此同一個(gè) map,每次遍歷獲取的順序很可能是不一致的。

map 概念

map 是引用類(lèi)型,可以使用如下方式聲明:

var mapname map[keytype]valuetype

其中:

  • mapname 為 map 的變量名。

  • keytype 為鍵類(lèi)型。

  • valuetype 是鍵對(duì)應(yīng)的值類(lèi)型。

提示:[keytype] 和 valuetype 之間允許有空格。

在聲明的時(shí)候不需要知道 map 的長(zhǎng)度,因?yàn)?map 是可以動(dòng)態(tài)增長(zhǎng)的,未初始化的 map 的值是 nil,使用函數(shù) len() 可以獲取 map 中 pair 的數(shù)目。

【示例】

package main
import "fmt"
func main() {
    var mapLit map[string]int
    //var mapCreated map[string]float32
    var mapAssigned map[string]int
    mapLit = map[string]int{"one": 1, "two": 2}
    mapCreated := make(map[string]float32)
    mapAssigned = mapLit
    mapCreated["key1"] = 4.5
    mapCreated["key2"] = 3.14159
    mapAssigned["two"] = 3
    fmt.Printf("Map literal at \"one\" is: %d\n", mapLit["one"])
    fmt.Printf("Map created at \"key2\" is: %f\n", mapCreated["key2"])
    fmt.Printf("Map assigned at \"two\" is: %d\n", mapLit["two"])
    fmt.Printf("Map literal at \"ten\" is: %d\n", mapLit["ten"])
}

輸出結(jié)果:

golang中map的概念是什么

示例中 mapLit 演示了使用{key1: value1, key2: value2}的格式來(lái)初始化 map ,就像數(shù)組和結(jié)構(gòu)體一樣。

上面代碼中的 mapCreated 的創(chuàng)建方式mapCreated := make(map[string]float)等價(jià)于mapCreated := map[string]float{} 。

mapAssigned 是 mapList 的引用,對(duì) mapAssigned 的修改也會(huì)影響到 mapLit 的值。

注意:可以使用 make(),但不能使用 new() 來(lái)構(gòu)造 map,如果錯(cuò)誤的使用 new() 分配了一個(gè)引用對(duì)象,會(huì)獲得一個(gè)空引用的指針,相當(dāng)于聲明了一個(gè)未初始化的變量并且取了它的地址:

mapCreated := new(map[string]float)

接下來(lái)當(dāng)我們調(diào)用mapCreated["key1"] = 4.5的時(shí)候,編譯器會(huì)報(bào)錯(cuò):

invalid operation: mapCreated["key1"] (index of type *map[string]float).

map 容量

和數(shù)組不同,map 可以根據(jù)新增的 key-value 動(dòng)態(tài)的伸縮,因此它不存在固定長(zhǎng)度或者最大限制,但是也可以選擇標(biāo)明 map 的初始容量 capacity,格式如下:

make(map[keytype]valuetype, cap)

例如:

map2 := make(map[string]float, 100)

當(dāng) map 增長(zhǎng)到容量上限的時(shí)候,如果再增加新的 key-value,map 的大小會(huì)自動(dòng)加 1,所以出于性能的考慮,對(duì)于大的 map 或者會(huì)快速擴(kuò)張的 map,即使只是大概知道容量,也最好先標(biāo)明。

這里有一個(gè) map 的具體例子,即將音階和對(duì)應(yīng)的音頻映射起來(lái):

noteFrequency := map[string]float32 {
"C0": 16.35, "D0": 18.35, "E0": 20.60, "F0": 21.83,
"G0": 24.50, "A0": 27.50, "B0": 30.87, "A4": 440}

讀到這里,這篇“golang中map的概念是什么”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過(guò)才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


當(dāng)前名稱(chēng):golang中map的概念是什么
標(biāo)題鏈接:http://weahome.cn/article/picjsj.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部