最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Go語(yǔ)言基礎(chǔ)map用法及示例詳解

 更新時(shí)間:2021年11月17日 11:13:25   作者:楓少文  
這篇文章主要為大家介紹了Go語(yǔ)言基礎(chǔ)map的用法及示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

在這里插入圖片描述

概述

  • map是基于key-value鍵值對(duì)的無(wú)序的集合
  • Go語(yǔ)言中的map是引用類型
  • 必須初始化才能使用。

語(yǔ)法

聲明和初始化

配合make使用,否則是nil

var map[KeyType]ValueType
//KeyType:表示鍵的類型
//ValueType:表示鍵對(duì)應(yīng)的值的類型
make(map[KeyType]ValueType, [cap])
//cap表示map的容量,該參數(shù)雖然不是必須的,但是我們應(yīng)該在初始化map的時(shí)候就為其指定一個(gè)合適的容量
//當(dāng)你的容量超過(guò)時(shí)會(huì)自動(dòng)擴(kuò)充

例子:

//1.聲明
var name1 map[int]string   //key是int,value是string
var name2 map[string]string  //key是string,value是string
//字面量
names3:=map[int]string{0:"張三",1:"李四"}
//2.分配內(nèi)存
name1 = make(map[int]string, 2)         //2:map的容量,當(dāng)你的容量超過(guò)時(shí)會(huì)自動(dòng)擴(kuò)充
name2 = make(map[string]string, 2)
//3.賦值
//3.1 通過(guò)KeyType賦值
name1[0]="張三"   //key:0   value:張三
name1[1]="李四"   //key:1   value:李四
name1[2]="王五"   //key:2   value:王五    //已經(jīng)超過(guò)了分配的的容量,會(huì)自動(dòng)擴(kuò)充
name2["A"]="張三"
name2["B"]="李四"

讀取

根據(jù)KeyType來(lái)讀取

如果keyType存在,就返回那個(gè)值,如果不存在,返回類型默認(rèn)值值

fmt.Println(name1[0])
fmt.Println(name2["B"])

測(cè)試map中key值是否存在

通過(guò)KeyType來(lái)取值時(shí),會(huì)返回兩個(gè)值,一個(gè)是vlue,另一個(gè)是是否存在的bool

if value, ok := name1[5]; ok {
	fmt.Println("存在這個(gè)值",value)
} else {
	fmt.Println("不存在這個(gè)值", value)
}

刪除

delete(map[int]string,[KeyType])

例子

delete(name1 , 1)

遍歷

range

例子:

for key,value:=range name1 {
	fmt.Printf("key=%d,value=%s\n",key,value)
}
for key,value:=range name2 {
	fmt.Printf("key=%s,value=%s\n",key,value)
}

總結(jié)

  1. map必須借助make分配內(nèi)存空間,否則是nil
  2. 字面量初始化必修保證key是唯一的,否則error
  3. map傳遞的是引用,就是說(shuō)形參會(huì)改變實(shí)參的值
  4. 直接對(duì)map對(duì)象使用[]操作符獲得的對(duì)象不能直接修改狀態(tài)
  5. map中存儲(chǔ)指針而不是結(jié)構(gòu)體

示例

package main
import "fmt"
func main() {
	//一、聲明和初始化【配合make使用,否則是nil】
	//1.聲明
	var name1 map[int]string    //key是int,value是string
	var name2 map[string]string //key是string,value是string
	//2.分配內(nèi)存
	name1 = make(map[int]string, 2) //2:map的容量,當(dāng)你的容量超過(guò)時(shí)會(huì)自動(dòng)擴(kuò)充
	name2 = make(map[string]string, 2)
	//3.賦值
	//3.1 通過(guò)KeyType賦值
	name1[0] = "張三" //key:0   value:張三
	name1[1] = "李四" //key:1   value:李四
	name1[2] = "王五" //key:2   value:王五    //已經(jīng)超過(guò)了分配的的容量,會(huì)自動(dòng)擴(kuò)充
	name2["A"] = "張三"
	name2["B"] = "李四"
	//二、讀取
	//	1. 根據(jù)KeyType來(lái)讀取,如果keyType存在,就返回那個(gè)值,如果不存在,返回類型默認(rèn)值值
	fmt.Println(name1[0])
	fmt.Println(name2["B"])
	//	2. 測(cè)試map中key值是否存在【通過(guò)KeyType來(lái)取值時(shí),會(huì)返回兩個(gè)值,一個(gè)是vlue,另一個(gè)是是否存在的bool】
	if value, ok := name1[2]; ok {
		fmt.Println("存在這個(gè)值", value)
	} else {
		fmt.Println("不存在這個(gè)值", value)
	}
	//三、刪除
	delete(name1, 1)  //刪除了李四
	delete(name2, "C")   //沒(méi)有這個(gè)C
	fmt.Println(name1)
	fmt.Println(name2)
	//四、遍歷
	for key,value:=range name1 {
		fmt.Printf("key=%d,value=%s\n",key,value)
	}
	for key,value:=range name2 {
		fmt.Printf("key=%s,value=%s\n",key,value)
	}
}

以上就是Go語(yǔ)言基礎(chǔ)map用法及示例詳解的詳細(xì)內(nèi)容,更多關(guān)于Go語(yǔ)言基礎(chǔ)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • golang time常用方法詳解

    golang time常用方法詳解

    這篇文章主要介紹了golang time常用方法詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • 以Golang為例詳解AST抽象語(yǔ)法樹(shù)的原理與實(shí)現(xiàn)

    以Golang為例詳解AST抽象語(yǔ)法樹(shù)的原理與實(shí)現(xiàn)

    AST?使用樹(shù)狀結(jié)構(gòu)來(lái)表達(dá)編程語(yǔ)言的結(jié)構(gòu),樹(shù)中的每一個(gè)節(jié)點(diǎn)都表示源碼中的一個(gè)結(jié)構(gòu),本文將以GO語(yǔ)言為例,為大家介紹一下AST抽象語(yǔ)法樹(shù)的原理與實(shí)現(xiàn),希望對(duì)大家有所幫助
    2024-01-01
  • go如何優(yōu)雅關(guān)閉Graceful?Shutdown服務(wù)

    go如何優(yōu)雅關(guān)閉Graceful?Shutdown服務(wù)

    這篇文章主要為大家介紹了go優(yōu)雅關(guān)閉Graceful?Shutdown服務(wù)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • golang中按照結(jié)構(gòu)體的某個(gè)字段排序?qū)嵗a

    golang中按照結(jié)構(gòu)體的某個(gè)字段排序?qū)嵗a

    在任何編程語(yǔ)言中,關(guān)乎到數(shù)據(jù)的排序都會(huì)有對(duì)應(yīng)的策略,下面這篇文章主要給大家介紹了關(guān)于golang中按照結(jié)構(gòu)體的某個(gè)字段排序的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • Go結(jié)構(gòu)體從基礎(chǔ)到應(yīng)用深度探索

    Go結(jié)構(gòu)體從基礎(chǔ)到應(yīng)用深度探索

    本文深入探討了結(jié)構(gòu)體的定義、類型、字面量表示和使用方法,旨在為讀者呈現(xiàn)Go結(jié)構(gòu)體的全面視角,通過(guò)結(jié)構(gòu)體,開(kāi)發(fā)者可以實(shí)現(xiàn)更加模塊化、高效的代碼設(shè)計(jì),這篇文章旨在為您提供關(guān)于結(jié)構(gòu)體的深入理解,助您更好地利用Go語(yǔ)言的強(qiáng)大功能
    2023-10-10
  • 構(gòu)建Golang應(yīng)用最小Docker鏡像的實(shí)現(xiàn)

    構(gòu)建Golang應(yīng)用最小Docker鏡像的實(shí)現(xiàn)

    這篇文章主要介紹了構(gòu)建Golang應(yīng)用最小Docker鏡像的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • go語(yǔ)言版的ip2long函數(shù)實(shí)例

    go語(yǔ)言版的ip2long函數(shù)實(shí)例

    這篇文章主要介紹了go語(yǔ)言版的ip2long函數(shù),實(shí)例分析了Go語(yǔ)言實(shí)現(xiàn)的ip2long函數(shù)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-02-02
  • go語(yǔ)言?nil使用避坑指南

    go語(yǔ)言?nil使用避坑指南

    這篇文章主要為大家介紹了go語(yǔ)言?nil使用避坑指南詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • 深入理解go slice結(jié)構(gòu)

    深入理解go slice結(jié)構(gòu)

    這篇文章主要介紹了go slice結(jié)構(gòu),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-09-09
  • go實(shí)現(xiàn)服務(wù)優(yōu)雅關(guān)閉的示例

    go實(shí)現(xiàn)服務(wù)優(yōu)雅關(guān)閉的示例

    本文主要介紹了go實(shí)現(xiàn)服務(wù)優(yōu)雅關(guān)閉的示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02

最新評(píng)論

遵化市| 壤塘县| 布尔津县| 化州市| 盐源县| 岑溪市| 都江堰市| 宁都县| 安新县| 永德县| 荣昌县| 阳春市| 额敏县| 大安市| 虎林市| 绥化市| 稻城县| 平顺县| 信阳市| 海盐县| 方城县| 娄底市| 始兴县| 儋州市| 府谷县| 道真| 略阳县| 龙胜| 霍州市| 宕昌县| 宜城市| 营山县| 新疆| 双牌县| 黔西县| 游戏| 阜南县| 乳山市| 昌邑市| 旅游| 武威市|