GO?集合?map?使用示例小結(jié)
Go語言的集合稱為映射(map),它是一種無序的鍵值對(key-value)的集合,集合是通過鍵(key)來快速檢索值(value)的,鍵(key)類似于索引,它指向值(value)的數(shù)據(jù)。
1.定義map變量語法
var m map[keyType]valueType // 聲明一個空的 map 變量 m := make(map[keyType]valueType) // 創(chuàng)建一個空的 map 變量
其中keyType
和valueType
分別表示鍵和值的類型,可以是任意基本數(shù)據(jù)類型、引用類型或結(jié)構(gòu)體類型。
2.設(shè)值和取值
m[key] = value // 向 map 中添加或修改鍵值對 v, ok := m[key] // 從 map 中獲取鍵對應(yīng)的值,ok 表示是否存在該鍵
3.刪除元素
delete(m, key) // 從 map 中刪除指定鍵的元素
4.遍歷map:
// 遍歷鍵值對 for key, value := range m { fmt.Println(key, value) } // 遍歷鍵 for key := range m { fmt.Println(key) } // 遍歷值 for _, value := range m { fmt.Println(value) }
5.使用示例:
package main import "fmt" func main() { // 定義一個 map 變量 m := make(map[int]string) // 向 map 中添加鍵值對 m[1] = "apple" m[2] = "banana" m[3] = "cherry" // 獲取 map 中指定鍵的值 v1, ok1 := m[1] v4, ok4 := m[4] // 輸出結(jié)果 fmt.Println(v1, ok1) fmt.Println(v4, ok4) // 遍歷 map 中的鍵值對 for k, v := range m { fmt.Println(k, v) } }
6.map 使用interface類型的值
在 Go 的map
中,值的類型為interface{}
時,可以存儲各種類型的數(shù)據(jù),這是因?yàn)?code>interface{}類型是一種空接口,它可以表示任何類型的值。具體來說,一個interface{}
類型的變量可以存儲任何實(shí)現(xiàn)了空接口的方法集的類型的值,包括基本類型、引用類型、函數(shù)類型、結(jié)構(gòu)體類型和接口類型等。這種類型的變量不關(guān)注具體存儲的值是什么類型,只關(guān)注該值是否實(shí)現(xiàn)了空接口的方法集。因此,可以使用空接口類型來實(shí)現(xiàn)一個通用的map
變量,可以存儲任意類型的值。 例如,下面是一個使用空接口類型的map
變量,可以存儲任意類型的值:
package main import "fmt" func main() { m := make(map[string]interface{}) m["name"] = "Tom" m["age"] = 18 m["gender"] = true fmt.Println(m) }
在上面的例子中,我們使用空接口類型interface{}
作為map
中值的類型,可以存儲字符串、整數(shù)和布爾值等不同類型的值。最終的輸出結(jié)果如下:
map[age:18 gender:true name:Tom]
需要注意的是,當(dāng)我們從這個map
變量中獲取值時,需要進(jìn)行類型斷言,以確定具體的值的類型。例如,可以使用如下代碼獲取鍵為"name"
的值:
name, ok := m["name"].(string) if ok { fmt.Println(name) }
在上面的代碼中,使用斷言操作符.(string)
將取出的值斷言為字符串類型,并將結(jié)果存儲到name
變量中。如果鍵為"name"
的值確實(shí)是字符串類型,則ok
的值為true
,否則為false
。如果ok
的值為true
,則表示斷言操作成功,可以安全地使用name
變量;否則,表示斷言操作失敗,name
變量的值為類型的零值。
到此這篇關(guān)于GO集合map使用總結(jié)的文章就介紹到這了,更多相關(guān)GO集合map使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Golang校驗(yàn)字符串是否JSON格式的方法總結(jié)
這篇文章主要為大家詳細(xì)介紹了Golang中校驗(yàn)字符串是否JSON格式的方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下2023-04-04一文深入探索Go語言中的循環(huán)結(jié)構(gòu)
在編程中,循環(huán)結(jié)構(gòu)扮演著重要的角色,它使我們能夠有效地重復(fù)執(zhí)行特定的代碼塊,以實(shí)現(xiàn)各種任務(wù)和邏輯,在Go語言中,for 是 Go 中唯一的循環(huán)結(jié)構(gòu),本文將深入探討Go語言中的for循環(huán)類型以及它們的用法2023-08-08Golang中List的實(shí)現(xiàn)方法示例詳解
最近決定復(fù)習(xí)下Go,所以下面這篇文章主要給大家介紹了關(guān)于Golang中List的實(shí)現(xiàn)方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-09-09重學(xué)Go語言之如何開發(fā)RPC應(yīng)用
這篇文章主要為大家詳細(xì)介紹了在Go語言中如何構(gòu)建RPC應(yīng)用,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-09-09