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

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

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

在這里插入圖片描述

概述

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

語法

聲明和初始化

配合make使用,否則是nil

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

例子:

//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)你的容量超過時會自動擴充
name2 = make(map[string]string, 2)
//3.賦值
//3.1 通過KeyType賦值
name1[0]="張三"   //key:0   value:張三
name1[1]="李四"   //key:1   value:李四
name1[2]="王五"   //key:2   value:王五    //已經(jīng)超過了分配的的容量,會自動擴充
name2["A"]="張三"
name2["B"]="李四"

讀取

根據(jù)KeyType來讀取

如果keyType存在,就返回那個值,如果不存在,返回類型默認值值

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

測試map中key值是否存在

通過KeyType來取值時,會返回兩個值,一個是vlue,另一個是是否存在的bool

if value, ok := name1[5]; ok {
	fmt.Println("存在這個值",value)
} else {
	fmt.Println("不存在這個值", 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傳遞的是引用,就是說形參會改變實參的值
  4. 直接對map對象使用[]操作符獲得的對象不能直接修改狀態(tài)
  5. map中存儲指針而不是結(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)你的容量超過時會自動擴充
	name2 = make(map[string]string, 2)
	//3.賦值
	//3.1 通過KeyType賦值
	name1[0] = "張三" //key:0   value:張三
	name1[1] = "李四" //key:1   value:李四
	name1[2] = "王五" //key:2   value:王五    //已經(jīng)超過了分配的的容量,會自動擴充
	name2["A"] = "張三"
	name2["B"] = "李四"
	//二、讀取
	//	1. 根據(jù)KeyType來讀取,如果keyType存在,就返回那個值,如果不存在,返回類型默認值值
	fmt.Println(name1[0])
	fmt.Println(name2["B"])
	//	2. 測試map中key值是否存在【通過KeyType來取值時,會返回兩個值,一個是vlue,另一個是是否存在的bool】
	if value, ok := name1[2]; ok {
		fmt.Println("存在這個值", value)
	} else {
		fmt.Println("不存在這個值", value)
	}
	//三、刪除
	delete(name1, 1)  //刪除了李四
	delete(name2, "C")   //沒有這個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語言基礎(chǔ)map用法及示例詳解的詳細內(nèi)容,更多關(guān)于Go語言基礎(chǔ)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Go語言學(xué)習(xí)之JSON編碼解析與使用

    Go語言學(xué)習(xí)之JSON編碼解析與使用

    這篇文章主要為大家詳細介紹了Go語言中JSON編碼的解析與使用已經(jīng)JSON與Map、結(jié)構(gòu)體的互相轉(zhuǎn)化,文中的示例代碼講解詳細,需要的可以參考一下
    2023-02-02
  • Go語言kafka生產(chǎn)消費消息實例搬磚

    Go語言kafka生產(chǎn)消費消息實例搬磚

    這篇文章主要為大家介紹了Go語言kafka生產(chǎn)消費消息的實例搬磚,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • Go?Interface接口初學(xué)者手冊

    Go?Interface接口初學(xué)者手冊

    這篇文章主要為大家介紹了Go?Interface接口的基礎(chǔ)用法實例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01
  • Golang定時器Timer與Ticker的使用詳解

    Golang定時器Timer與Ticker的使用詳解

    在 Go 里有很多種定時器的使用方法,像常規(guī)的 Timer、Ticker 對象,本文主要為大家介紹了Timer與Ticker的使用,感興趣的小伙伴可以了解一下
    2023-05-05
  • Go語言的文件操作代碼匯總

    Go語言的文件操作代碼匯總

    本文給大家匯總介紹了go語言中的文件操作的代碼,包括文件的讀寫,文件的新建打開和刪除等,希望對大家學(xué)習(xí)go語言能夠有所幫助
    2018-10-10
  • go內(nèi)存緩存如何new一個bigcache對象示例詳解

    go內(nèi)存緩存如何new一個bigcache對象示例詳解

    這篇文章主要為大家介紹了go內(nèi)存緩存如何new一個bigcache對象示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • 淺談Go Channel 高級實踐

    淺談Go Channel 高級實踐

    這篇文章主要介紹了淺談Go Channel 高級實踐,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • Golang中的參數(shù)傳遞示例詳解

    Golang中的參數(shù)傳遞示例詳解

    參數(shù)傳遞是指在程序的傳遞過程中,實際參數(shù)就會將參數(shù)值傳遞給相應(yīng)的形式參數(shù),然后在函數(shù)中實現(xiàn)對數(shù)據(jù)處理和返回的過程,下面這篇文章主要給大家介紹了關(guān)于Golang中參數(shù)傳遞的相關(guān)資料,需要的朋友可以參考下。
    2017-09-09
  • Go 加密解密算法小結(jié)

    Go 加密解密算法小結(jié)

    加密解密在實際開發(fā)中應(yīng)用比較廣泛,常見的加解密分為三種,本文就詳細的介紹一下Go 加密解密算法,具有一定的參考價值,感興趣的可以了解一下
    2022-01-01
  • go通過編碼縮短字符串的長度實現(xiàn)方法步驟

    go通過編碼縮短字符串的長度實現(xiàn)方法步驟

    這篇文章主要為大家介紹了go通過編碼縮短字符串的長度實現(xiàn)方法步驟,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01

最新評論