国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Go語言基礎(chǔ)之map

這篇具有很好參考價值的文章主要介紹了Go語言基礎(chǔ)之map。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

Go語言中提供的映射關(guān)系容器為map,其內(nèi)部使用散列表(hash)實(shí)現(xiàn)。

map

map是一種無序的基于key-value的數(shù)據(jù)結(jié)構(gòu),Go語言中的map是引用類型,必須初始化才能使用。

map定義

Go語言中 map的定義語法如下:

map[KeyType]ValueType

其中,

  • KeyType:表示鍵的類型。
  • ValueType:表示鍵對應(yīng)的值的類型。

map類型的變量默認(rèn)初始值為nil,需要使用make()函數(shù)來分配內(nèi)存。語法為:

make(map[KeyType]ValueType, [cap])

其中cap表示map的容量,該參數(shù)雖然不是必須的,但是我們應(yīng)該在初始化map的時候就為其指定一個合適的容量。

map基本使用

map中的數(shù)據(jù)都是成對出現(xiàn)的,map的基本使用示例代碼如下:

func main() {
	scoreMap := make(map[string]int, 8)
	scoreMap["張三"] = 90
	scoreMap["小明"] = 100
	fmt.Println(scoreMap)
	fmt.Println(scoreMap["小明"])
	fmt.Printf("type of a:%T\n", scoreMap)
}

輸出:

map[小明:100 張三:90]
100
type of a:map[string]int

map也支持在聲明的時候填充元素,例如:

func main() {
	userInfo := map[string]string{
		"username": "沙河小王子",
		"password": "123456",
	}
	fmt.Println(userInfo) //
}

判斷某個鍵是否存在

Go語言中有個判斷map中鍵是否存在的特殊寫法,格式如下:

value, ok := map[key]

舉個例子:

func main() {
	scoreMap := make(map[string]int)
	scoreMap["張三"] = 90
	scoreMap["小明"] = 100
	// 如果key存在ok為true,v為對應(yīng)的值;不存在ok為false,v為值類型的零值
	v, ok := scoreMap["張三"]
	if ok {
		fmt.Println(v)
	} else {
		fmt.Println("查無此人")
	}
}

map的遍歷

Go語言中使用for range遍歷map。

func main() {
	scoreMap := make(map[string]int)
	scoreMap["張三"] = 90
	scoreMap["小明"] = 100
	scoreMap["娜扎"] = 60
	for k, v := range scoreMap {
		fmt.Println(k, v)
	}
}

但我們只想遍歷key的時候,可以按下面的寫法:

func main() {
	scoreMap := make(map[string]int)
	scoreMap["張三"] = 90
	scoreMap["小明"] = 100
	scoreMap["娜扎"] = 60
	for k := range scoreMap {
		fmt.Println(k)
	}
}

注意: 遍歷map時的元素順序與添加鍵值對的順序無關(guān)。

使用delete()函數(shù)刪除鍵值對

使用delete()內(nèi)建函數(shù)從map中刪除一組鍵值對,delete()函數(shù)的格式如下:

delete(map, key)

其中,

  • map:表示要刪除鍵值對的map
  • key:表示要刪除的鍵值對的鍵

示例代碼如下:

func main(){
	scoreMap := make(map[string]int)
	scoreMap["張三"] = 90
	scoreMap["小明"] = 100
	scoreMap["娜扎"] = 60
	delete(scoreMap, "小明")//將小明:100從map中刪除
	for k,v := range scoreMap{
		fmt.Println(k, v)
	}
}

按照指定順序遍歷map

func main() {
	rand.Seed(time.Now().UnixNano()) //初始化隨機(jī)數(shù)種子

	var scoreMap = make(map[string]int, 200)

	for i := 0; i < 100; i++ {
		key := fmt.Sprintf("stu%02d", i) //生成stu開頭的字符串
		value := rand.Intn(100)          //生成0~99的隨機(jī)整數(shù)
		scoreMap[key] = value
	}
	//取出map中的所有key存入切片keys
	var keys = make([]string, 0, 200)
	for key := range scoreMap {
		keys = append(keys, key)
	}
	//對切片進(jìn)行排序
	sort.Strings(keys)
	//按照排序后的key遍歷map
	for _, key := range keys {
		fmt.Println(key, scoreMap[key])
	}
}

元素為map類型的切片

下面的代碼演示了切片中的元素為map類型時的操作:

func main() {
	var mapSlice = make([]map[string]string, 3)
	for index, value := range mapSlice {
		fmt.Printf("index:%d value:%v\n", index, value)
	}
	fmt.Println("after init")
	// 對切片中的map元素進(jìn)行初始化
	mapSlice[0] = make(map[string]string, 10)
	mapSlice[0]["name"] = "小王子"
	mapSlice[0]["password"] = "123456"
	mapSlice[0]["address"] = "沙河"
	for index, value := range mapSlice {
		fmt.Printf("index:%d value:%v\n", index, value)
	}
}

值為切片類型的map

下面的代碼演示了map中值為切片類型的操作:文章來源地址http://www.zghlxwxcb.cn/news/detail-670403.html

func main() {
	var sliceMap = make(map[string][]string, 3)
	fmt.Println(sliceMap)
	fmt.Println("after init")
	key := "中國"
	value, ok := sliceMap[key]
	if !ok {
		value = make([]string, 0, 2)
	}
	value = append(value, "北京", "上海")
	sliceMap[key] = value
	fmt.Println(sliceMap)
}

到了這里,關(guān)于Go語言基礎(chǔ)之map的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【字節(jié)跳動青訓(xùn)營】后端筆記整理-1 | Go語言入門指南:基礎(chǔ)語法和常用特性解析

    【字節(jié)跳動青訓(xùn)營】后端筆記整理-1 | Go語言入門指南:基礎(chǔ)語法和常用特性解析

    **本人是第六屆字節(jié)跳動青訓(xùn)營(后端組)的成員。本文由博主本人整理自該營的日常學(xué)習(xí)實(shí)踐,首發(fā)于稀土掘金:??Go語言入門指南:基礎(chǔ)語法和常用特性解析 | 青訓(xùn)營 本文主要梳理自 第六屆字節(jié)跳動青訓(xùn)營(后端組)-Go語言原理與實(shí)踐第一節(jié)(王克純老師主講) 。同時

    2024年02月13日
    瀏覽(24)
  • 100天精通Golang(基礎(chǔ)入門篇)——第15天:深入解析Go語言中函數(shù)的應(yīng)用:從基礎(chǔ)到進(jìn)階,助您精通函數(shù)編程!(進(jìn)階)

    100天精通Golang(基礎(chǔ)入門篇)——第15天:深入解析Go語言中函數(shù)的應(yīng)用:從基礎(chǔ)到進(jìn)階,助您精通函數(shù)編程?。ㄟM(jìn)階)

    ?? 博主 libin9iOak帶您 Go to Golang Language.? ?? 個人主頁——libin9iOak的博客?? ?? 《面試題大全》 文章圖文并茂??生動形象??簡單易學(xué)!歡迎大家來踩踩~?? ?? 《IDEA開發(fā)秘籍》學(xué)會IDEA常用操作,工作效率翻倍~?? ?? 希望本文能夠給您帶來一定的幫助??文章粗淺,敬請批

    2024年02月12日
    瀏覽(36)
  • 【Go】Go語言開發(fā)0基礎(chǔ)7天入門 - 筆記

    【Go】Go語言開發(fā)0基礎(chǔ)7天入門 - 筆記

    課程來源:【路飛學(xué)城】-黑金年卡VIP課程 課程名稱:GO語言開發(fā)0基礎(chǔ)7天入門 講師:【 前汽車之家架構(gòu)師 】Wusir-銀角大王 官網(wǎng):點(diǎn)擊進(jìn)入 集python簡潔 + C語言性能 詳情點(diǎn)擊 編程語言 實(shí)戰(zhàn)經(jīng)驗(yàn) 源碼 并發(fā)架構(gòu) 新語言觸類旁通 1.1 開篇介紹(必看) 1.2 環(huán)境搭建前戲 1.3 mac系統(tǒng)G

    2024年02月16日
    瀏覽(30)
  • 【Go 基礎(chǔ)篇】Go語言包詳解:模塊化開發(fā)與代碼復(fù)用

    在Go語言中, 包(Package) 是一種用于組織代碼的機(jī)制,用于將相關(guān)的函數(shù)、類型和變量等組織在一起,以便于模塊化開發(fā)和代碼復(fù)用。包的使用能夠使程序結(jié)構(gòu)更加清晰、可維護(hù)性更高,同時也是Go語言強(qiáng)調(diào)的一項(xiàng)重要特性。本篇博客將深入探討Go語言中包的相關(guān)知識,包括

    2024年02月11日
    瀏覽(88)
  • go語言從0基礎(chǔ)到安全項(xiàng)目開發(fā)實(shí)戰(zhàn)

    go語言從0基礎(chǔ)到安全項(xiàng)目開發(fā)實(shí)戰(zhàn)

    搭建環(huán)境比較簡單 到以下鏈接下 Go下載 - Go語言中文網(wǎng) - Golang中文社區(qū) 下載windows版本64位zip包 https://studygolang.com/dl/golang/go1.20.7.windows-amd64.zip 不配置的話就只能在bin目錄下才能運(yùn)行g(shù)o命令 創(chuàng)建test.go文件 然后代碼如下 編譯運(yùn)行? 兩種方式編譯運(yùn)行代碼 1.先 go build test.go編譯成

    2024年02月13日
    瀏覽(17)
  • Go語言 -- Web開發(fā)基礎(chǔ)學(xué)習(xí) net/http包

    Go語言 -- Web開發(fā)基礎(chǔ)學(xué)習(xí) net/http包

    Go 是一個開源的編程語言,它能讓構(gòu)造簡單、可靠且高效的軟件變得容易。 Go語言最擅長的領(lǐng)域就是Web開發(fā),此貼是本人入門完go語法基礎(chǔ)后學(xué)習(xí)Web開發(fā)的學(xué)習(xí)筆記。 新建go文件hello_world.go 寫入: 在命令行運(yùn)行: go run ./hello_world.go 可以發(fā)現(xiàn)控制臺輸出以下信息 通過上述代碼

    2024年02月06日
    瀏覽(22)
  • 【Golang】Golang進(jìn)階系列教程--Go 語言 map 如何順序讀取?

    Go 語言中的 map 是一種非常強(qiáng)大的數(shù)據(jù)結(jié)構(gòu),它允許我們快速地存儲和檢索鍵值對。 然而,當(dāng)我們遍歷 map 時,會有一個有趣的現(xiàn)象,那就是輸出的鍵值對順序是不確定的。 先看一段代碼示例: 當(dāng)我們多執(zhí)行幾次這段代碼時,就會發(fā)現(xiàn),輸出的順序是不同的。 首先,Go 語言

    2024年02月14日
    瀏覽(98)
  • 【go語言基礎(chǔ)】go中的方法

    先思考一個問題,什么是方法,什么是函數(shù)? 方法是從屬于某個結(jié)構(gòu)體或者非結(jié)構(gòu)體的。在func這個和方法名中間加了一個特殊的接收器類型,這個接收器可以是結(jié)構(gòu)體類型的或者是非結(jié)構(gòu)體類型的。從屬的結(jié)構(gòu)體獲取該方法。 函數(shù)則沒有這種從屬關(guān)系。 小結(jié): 大多

    2024年02月13日
    瀏覽(21)
  • Go語言基礎(chǔ)(一)

    本文檔參考golang官方文檔以及一些教程書籍,若文檔有錯誤,歡迎issue ?? https://go.dev/doc/tutorial/ 參考書籍《Go語言開發(fā)實(shí)戰(zhàn)》 Go語言是Google公司發(fā)布的一種靜態(tài)型、編譯型的開源編程語言,是新時代的 C語言 。Go語言已經(jīng)成為 云計(jì)算時代 的重要基礎(chǔ)編程語言。 2012年3月28日,

    2024年02月06日
    瀏覽(26)
  • Go語言基礎(chǔ)

    Go語言基礎(chǔ)

    參考書籍《Go程序設(shè)計(jì)語言》 學(xué)習(xí)Go語言基礎(chǔ),并記錄相關(guān)知識和代碼。 創(chuàng)建helloworld.go 輸出命令行參數(shù) 使用range簡化 使用Join簡化 版本二,文件與命令行 go 可以方便的創(chuàng)建服務(wù)器,并且有并發(fā)性。 Go并發(fā)獲取多個URL 簡單服務(wù)器 帶有并發(fā)鎖的計(jì)數(shù)服務(wù)器 顯示相關(guān)協(xié)議與表單

    2024年02月11日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包