go語言中提供的對映關係容器為map
,其內部使用雜湊表(hash)
實現。
map是一種無序的基於key-value
的資料結構,go語言中的map是引用型別,必須初始化才能使用。
go語言中map
的定義語法如下:
map
[keytype]valuetype
其中,
map型別的變數預設初始值為nil,需要使用make()函式來分配記憶體。語法為:
make
(map
[keytype]valuetype,
[cap
])
其中cap表示map的容量,該引數雖然不是必須的,但是我們應該在初始化map的時候就為其指定乙個合適的容量。
map中的資料都是成對出現的,map的基本使用示例**如下:
func
main()
輸出:
map[小明:100 張三:90]
100type of a:map[string]int
map也支援在宣告的時候填充元素,例如:
func
main()
fmt.
println
(userinfo)
//}
go語言中有個判斷map中鍵是否存在的特殊寫法,格式如下:
value, ok :=
map[key]
舉個例子:
func
main()
else
}
go語言中使用for range
遍歷map。
func
main()
}
但我們只想遍歷key的時候,可以按下面的寫法:
func
main()
}
注意:遍歷map時的元素順序與新增鍵值對的順序無關。
使用delete()
內建函式從map中刪除一組鍵值對,delete()
函式的格式如下:
delete
(map
, key)
其中,
示例**如下:
func
main()
}
func
main()
//取出map中的所有key存入切片keys
var keys =
make([
]string,0
,200
)for key :=
range scoremap
//對切片進行排序
sort.
strings
(keys)
//按照排序後的key遍歷map
for_
, key :=
range keys
}
下面的**演示了切片中的元素為map型別時的操作:
func
main()
fmt.
println
("after init"
)// 對切片中的map元素進行初始化
mapslice[0]
=make
(map
[string
]string,10
) mapslice[0]
["name"]=
"小王子"
mapslice[0]
["password"]=
"123456"
mapslice[0]
["address"]=
"沙河"
for index, value :=
range mapslice
}
下面的**演示了map中值為切片型別的操作:
func
main()
value =
(value,
"北京"
,"上海"
) slicemap[key]
= value
fmt.
println
(slicemap)
}
func
main()
s =(s,3
) fmt.
printf
("%+v\n"
, s)
m["q1mi"
]= s
s =(s[:1]
, s[2:
]...
) fmt.
printf
("%+v\n"
, s)
fmt.
printf
("%+v\n"
, m[
"q1mi"])
}
Go學習筆記(11)Go結構體struct
go的結構體是一種復合型別,它由一系列屬性 字段 組成,每個屬性 字段 都有自己的型別和值。結構體的字段可以是任何型別,甚至是結構體本身 函式 介面等 在go中沒有類的概念,因此結構體經常被用來替代物件導向中的類的操作 結構體的定義格式如下 type structname struct 下面是乙個結...
1 1Go環境搭建之Linux
1.ssh遠端登入linux伺服器,可選用iterm xshell ssh root ip2.建議配置好阿里雲yum源 epel源 安裝git yum install gitcd opt wget 4.解壓縮go原始碼包,確認當前linux系統版本是32位還是64位,再選擇go原始碼包 檢視linu...
Go筆記 1 1 Go開發環境搭建
golang的學習開始,就是開發環境的搭建。我正在學習酷酷的 golang,可點此檢視帖子golang學習筆記彙總。在完成安裝包的安裝之後,你只需要配置 gopath這乙個環境變數就可以開始使用 go 語言進行開發了,其它的環境變數安裝包均會進行自動設定。在預設情況下,go 將會被安裝在目錄c go...