區(qū)塊鏈 GO Map

Map 是一種無序的鍵值對的集合忌怎。Map 最重要的一點是通過 key 來快速檢索數(shù)據(jù),key 類似于索引柔袁,指向數(shù)據(jù)的值呆躲。

Map 是一種集合,所以我們可以像迭代數(shù)組和切片那樣迭代它捶索。不過插掂,Map 是無序的,我們無法決定它的返回順序腥例,這是因為 Map 是使用 hash 表來實現(xiàn)的辅甥。

Map的聲明

聲明的map是nil

var map_name map[string]string

var dic map[string]string 

//默認map是nil ,它與一個空map基本等價燎竖,只是nil的map不允許往里面添加值璃弄。(A nil map is equivalent to an empty map except that no elements may be added)
因此,map是nil時构回,取值是不會報錯的(取不到而已)夏块,但增加值會報錯。
通過fmt打印map時纤掸,空map和nil map結果是一樣的脐供,都為map[]。所以借跪,這個時候別斷定map是空還是nil政己,而應該通過map == nil來判斷。

聲明的map是null

var map_name = map[type]type{}
var dic = map[string]string{} // NULL
var dic1 = map[int]string{}//or:  dic1 := map[int]string{}


package main

import "fmt"

func main() {
    // 初始化一個map掏愁,map我們也經(jīng)常叫做字典
    var dic = map[string]string{} // NULL
    // ""
    fmt.Println(dic)
    fmt.Printf("%T\n", dic)
    fmt.Println(len(dic))
    dic["name"] = "zhang"
    fmt.Println(dic)
    fmt.Println(len(dic))
    fmt.Println(dic == nil)
}
輸出為:
map[]
map[string]string
0
map[name:zhang]
1
false

如果這么聲明 dic1 := map[int]string{}
請注意“}”與“歇由,”的寫法
dic := map[string]string{
        "name": "zelin",
        "age": "18", //如果 “}”和30這個字符串挨在一起,最后這個”,“可以不需要果港,否則必須添加
    } 
map 最好使用 make 函數(shù)初始化

通過向 make 函數(shù)傳入鍵和值的類型沦泌,可以創(chuàng)建 map。
make(map[type of key]type of value) 是創(chuàng)建 map 的語法辛掠。

myGreeting := make(map[string]string) //NULL
等價于下面三種寫法
// var myGreeting = make(map[string]string)
// myGreeting := map[string]string{}
// var myGreeting = map[string]string{}

myGreeting["Tim"] = "Good morning"
myGreeting["Jenny"] = "Bonjour"

fmt.Println(myGreeting)
// 返回字典鍵值對的個數(shù)
fmt.Println(len(myGreeting))
輸出為:
map[Tim:Good morning Jenny:Bonjour]
2
map的使用
map的增赦肃,刪,改公浪,查
package main

import "fmt"

func main() {
    dic := map[int]string{
        1: "張三",
        2: "李四",
        3: "王五",
        4: "找六",
    }

    fmt.Println(dic)

    // 更新num one
    dic[1] = "ze lin"

    fmt.Println(dic)

    // 添加
    dic[5] = "澤林"
    fmt.Println(dic)

    // 刪除
    // func delete(m map[Type]Type1, key Type)
    // 如果函數(shù)有返回值,會將原來的數(shù)據(jù)重新拷貝一份新的空間船侧,如果沒有返回值欠气,那么是在原來的空間里面直接修改數(shù)據(jù)
    // delete(map[typeA]typeB, typeA)
    delete(dic, 3)
    fmt.Println(dic)

    // 查詢
    fmt.Println(dic[1])

}
輸出為:
map[1:張三 2:李四 3:王五 4:找六]
map[1:ze lin 2:李四 3:王五 4:找六]
map[3:王五 4:找六 5:澤林 1:ze lin 2:李四]
map[5:澤林 1:ze lin 2:李四 4:找六]
ze lin
判斷key是否存在的問題
package main

import "fmt"

func main() {
    dic := map[string]string{
        "name": "zelin",
        "tel":  "185........",
    }
    // age

    if name, isExist := dic["name"]; isExist {
        fmt.Println(name)
        fmt.Println(isExist)
    }

    if val, ok := dic["age"]; !ok {
        fmt.Println(val)
        fmt.Println(ok)
    }

}
輸出為:
zelin
true

false
遍歷 map
遍歷 map 中所有的元素需要用 for range 循環(huán)。
package main

import "fmt"

func main() {

    myGreeting := map[int]string{
        0: "Good morning!",
        1: "Bonjour!",
        2: "Buenos dias!",
        3: "Bongiorno!",
    }

    // for index := 0; index < len(myGreeting); index++ {

    // }

    for key, val := range myGreeting {
        fmt.Println(key, " - ", val)
    }
}
輸出為:
0  -  Good morning!
1  -  Bonjour!
2  -  Buenos dias!
3  -  Bongiorno!
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末镜撩,一起剝皮案震驚了整個濱河市预柒,隨后出現(xiàn)的幾起案子队塘,更是在濱河造成了極大的恐慌,老刑警劉巖宜鸯,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件憔古,死亡現(xiàn)場離奇詭異,居然都是意外死亡淋袖,警方通過查閱死者的電腦和手機鸿市,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來即碗,“玉大人焰情,你說我怎么就攤上這事“粒” “怎么了内舟?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長初橘。 經(jīng)常有香客問我验游,道長,這世上最難降的妖魔是什么保檐? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任耕蝉,我火速辦了婚禮,結果婚禮上展东,老公的妹妹穿的比我還像新娘赔硫。我一直安慰自己,他們只是感情好盐肃,可當我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布爪膊。 她就那樣靜靜地躺著,像睡著了一般砸王。 火紅的嫁衣襯著肌膚如雪推盛。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天谦铃,我揣著相機與錄音耘成,去河邊找鬼。 笑死驹闰,一個胖子當著我的面吹牛瘪菌,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播嘹朗,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼师妙,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了屹培?” 一聲冷哼從身側響起默穴,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤怔檩,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蓄诽,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體薛训,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年仑氛,在試婚紗的時候發(fā)現(xiàn)自己被綠了居扒。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片义图。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出逗噩,到底是詐尸還是另有隱情荣倾,我是刑警寧澤关拒,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布桌硫,位于F島的核電站,受9級特大地震影響趋箩,放射性物質發(fā)生泄漏赃额。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一叫确、第九天 我趴在偏房一處隱蔽的房頂上張望跳芳。 院中可真熱鬧,春花似錦竹勉、人聲如沸飞盆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吓歇。三九已至,卻和暖如春票腰,著一層夾襖步出監(jiān)牢的瞬間城看,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工杏慰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留测柠,地道東北人。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓缘滥,卻偏偏與公主長得像轰胁,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子朝扼,可洞房花燭夜當晚...
    茶點故事閱讀 42,802評論 2 345

推薦閱讀更多精彩內(nèi)容