Go語言核心程式設計 09Map

2021-10-06 06:27:27 字數 3847 閱讀 5863

map是key-value資料結構,又稱為字段或者關聯陣列。

var a map[string]string

var a map[string]int

var a map[int]string

var a map[string]map[string]string //value也是乙個map

package main

import

"fmt"

func

main()

//第一種方式

var a map

[string

]string

//在使用map前,需要先make,make的作用就是給map分配陣列空間

a =make

(map

[string

]string,10

)a["no1"]=

"helo"

a["no2"]=

"golang"

fmt.

println

(a)//map[no1:hello no2:golang]

//第二種方式

b :=

make

(map

[string

]string)b[

"no1"]=

"beijing"

b["no2"]=

"shanghai"

fmt.

println

(b)//map[no1:beijing no2:shanghai]

//第三種方式

c :=

map[

string

]string

c["no3"]=

"alice"

fmt.

println

(c)//map[no1:jack no2:mary no3:alice]

注意:方式2/3沒有指定map的大小也能儲存是因為map能自動擴容。

map查詢:

val, ok :=

map[

"no1"

]if ok

else

map的遍歷使用for-range的結構遍歷。

//使用for-range遍歷map

a :=

map[

string

]string

for k, v :=

range a

//k = no1, v = beijing

//k = no2, v = shanghai

//k = no3, v = zhejiang

//k = no4, v = anhui

//使用for-range遍歷乙個複雜的map

stumap :=

make

(map

[string

]map

[string

]string

)stumap[

"stu01"]=

make

(map

[string

]string,3

)stumap[

"stu01"][

"name"]=

"jack"

stumap[

"stu01"][

"***"]=

"男"stumap[

"stu01"][

"address"]=

"北京"

stumap[

"stu02"]=

make

(map

[string

]string,3

)stumap[

"stu02"][

"name"]=

"mary"

stumap[

"stu02"][

"***"]=

"女"stumap[

"stu02"][

"address"]=

"上海"

for k1, v1 :=

range stumap

fmt.

println()

}//k1 = stu01

// k2 = address, v2 = 北京

// k2 = name, v2 = jack

// k2 = ***, v2 = 男

////k1 = stu02

// k2 = name, v2 = mary

// k2 = ***, v2 = 女

// k2 = address, v2 = 上海

切片的資料型別如果是map,那麼我們稱為map切片,這樣使用則map的個數就可以動態變化。

//1.宣告乙個map切片

var monsters [

]map

[string

]string

monsters =

make([

]map

[string

]string,2

)//2.增加第乙個monster的資訊

if monsters[0]

==nil

if monsters[1]

==nil

//此時如果要使用monsters[2]的方式,會溢位,不能動態的增加空間

//先定義乙個monster資訊

newmonster :=

map[

string

]string

monsters =

(monsters, newmonster)

fmt.

println

(monsters)

//[map[age:500 name:牛魔王] map[age:400 name:玉兔精] map[age:200 name:新的妖怪:火雲邪神]]

golang中沒有專門的方法針對map的key進行排序,只能先將key排序,然後根據key值遍歷輸出。

//map的排序

map1 :=

make

(map

[int

]int,10

)map1[10]

=100

map1[1]

=13map1[4]

=56map1[8]

=90//如果按照map的key的順序進行排序輸出

//1.先將map的key放入切片中

//2.對切片排序

//3.遍歷切片,然後按照key來輸出map的值

var keys [

]int

for k,_:=

range map1

//排序

sort.

ints

(keys)

//按照遞增的順序排列

fmt.

println

(keys)

//[1 4 8 10]

for_

, k :=

range keys

//map[1] = 13

//map[4] = 56

//map[8] = 90

//map[10] = 100

go語言核心程式設計 Go 語言核心檔案除錯

程式除錯對於檢查和理解程式執行過程和狀態是非常有用的。乙個核心轉儲檔案 core dump file 中包含程式程序執行時的記憶體資訊和程序狀態。它主要用於程式的問題除錯,以及在執行過程中理解程式的狀態。這些對於我們診斷程式問題原因和分析生產環境中的服務問題有非常大的幫助。在本文中,我會用乙個非常簡...

Go語言09 函式

函式是基本的 塊,用於執行乙個任務。go 語言最少有個 main 函式。你可以通過函式來劃分不同功能,邏輯上每個函式執行的是指定的任務。函式宣告告訴了編譯器函式的名稱,返回型別,和引數。go 語言標準庫提供了多種可動用的內建的函式。例如,len 函式可以接受不同型別引數並返回該型別的長度。如果我們傳...

Go 語言Map 集合

map 是一種無序的鍵值對的集合。map 最重要的一點是通過 key 來快速檢索資料,key 類似於索引,指向資料的值。map 是一種集合,所以我們可以像迭代陣列和切片那樣迭代它。不過,map 是無序的,我們無法決定它的返回順序,這是因為 map 是使用 hash 表來實現的。可以使用內建函式 ma...