日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

go map(映射)的概念、3种创建方式及map的CRUD操作

發(fā)布時間:2025/1/21 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 go map(映射)的概念、3种创建方式及map的CRUD操作 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

引入

【1】映射(map), Go語言中內(nèi)置的一種類型,它將鍵值對相關(guān)聯(lián),我們可以通過鍵 key來獲取對應(yīng)的值 value。 類似其它語言的集合

【2】基本語法

var map變量名 map[keytype]valuetype

PS:key、value的類型:bool、數(shù)字、string、指針、channel 、還可以是只包含前面幾個類型的接口、結(jié)構(gòu)體、數(shù)組
PS:key通常為int 、string類型,value通常為數(shù)字(整數(shù)、浮點數(shù))、string、map、結(jié)構(gòu)體
PS:key:slice、map、function不可以

【3】代碼:
map的特點:
(1)map集合在使用前一定要make
(2)map的key-value是無序的
(3)key是不可以重復(fù)的,如果遇到重復(fù),后一個value會替換前一個value
(4)value可以重復(fù)的

package main import "fmt" func main(){//定義map變量:var a map[int]string//只聲明map內(nèi)存是沒有分配空間//必須通過make函數(shù)進行初始化,才會分配空間:a = make(map[int]string,10) //map可以存放10個鍵值對//將鍵值對存入map中:a[20095452] = "張三"a[20095387] = "李四"a[20097291] = "王五"a[20095387] = "朱六"a[20096699] = "張三"//輸出集合fmt.Println(a) }

三種創(chuàng)建方式

package main import "fmt" func main(){//方式1://定義map變量:var a map[int]string//只聲明map內(nèi)存是沒有分配空間//必須通過make函數(shù)進行初始化,才會分配空間:a = make(map[int]string,10) //map可以存放10個鍵值對//將鍵值對存入map中:a[20095452] = "張三"a[20095387] = "李四"//輸出集合fmt.Println(a)//方式2:b := make(map[int]string)b[20095452] = "張三"b[20095387] = "李四"fmt.Println(b)//方式3:c := map[int]string{20095452 : "張三",20098765 : "李四",}c[20095387] = "王五"fmt.Println(c) }

map的CRUD操作

【1】增加和更新操作:
map[“key”]= value ——》 如果key還沒有,就是增加,如果key存在就是修改。
【2】刪除操作:
delete(map,“key”) , delete是一個內(nèi)置函數(shù),如果key存在,就刪除該key-value,如果k的y不存在,不操作,但是也不會報錯
【3】清空操作:
(1)如果我們要刪除map的所有key ,沒有一個專門的方法一次刪除,可以遍歷一下key,逐個刪除
(2)或者map = make(…),make一個新的,讓原來的成為垃圾,被gc回收
【4】查找操作:
value ,bool = map[key]
value為返回的value,bool為是否返回 ,要么true 要么false

package main import "fmt" func main(){//定義mapb := make(map[int]string)//增加:b[20095452] = "張三"b[20095387] = "李四"//修改:b[20095452] = "王五"//刪除:delete(b,20095387)delete(b,20089546)fmt.Println(b)//查找:value,flag := b[200]fmt.Println(value)fmt.Println(flag) }

【5】獲取長度:len函數(shù)

【6】遍歷:for-range

package main import "fmt" func main(){//定義mapb := make(map[int]string)//增加:b[20095452] = "張三"b[20095387] = "李四"b[20098833] = "王五"//獲取長度:fmt.Println(len(b))//遍歷:for k,v := range b {fmt.Printf("key為:%v value為%v \t",k,v)}fmt.Println("---------------------------")//加深難度:a := make(map[string]map[int]string)//賦值:a["班級1"] = make(map[int]string,3)a["班級1"][20096677] = "露露"a["班級1"][20098833] = "麗麗"a["班級1"][20097722] = "菲菲"a["班級2"] = make(map[int]string,3)a["班級2"][20089911] = "小明"a["班級2"][20085533] = "小龍"a["班級2"][20087244] = "小飛"for k1,v1:= range a {fmt.Println(k1)for k2,v2:= range v1{fmt.Printf("學生學號為:%v 學生姓名為%v \t",k2,v2)}fmt.Println()} }

總結(jié)

以上是生活随笔為你收集整理的go map(映射)的概念、3种创建方式及map的CRUD操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。