golang map的基本操作及定義方式
map的基本操作
map的定義方式
由于map是引用類型,所以在操作的時候,必須先初始化
方式一:
var a map[string]int
a = make(map[string]int, 16)
fmt.Printf("a = %#v \n", a)
a["stu01"] = 1000方式二:
a := map[string]int{
"stu01": 100,
"stu03": 300,
"stu02": 200,
}
fmt.Printf("a = %#v \n", a)判斷key是否存在
在獲取map的值得時候,可以接收兩個值,一個是獲取的值,一個是判斷是否存在的bool類型,如果存在,返回對應值,bool為true,不存在,返回對應類型的空值,bool為false
func test3() {
var a map[string]int
a = make(map[string]int, 16)
fmt.Printf("a = %#v \n", a)
a["stu01"] = 1000
a["stu02"] = 2000
var result int
var ok bool
var key string = "stu04"
result, ok = a[key]
if ok == false {
fmt.Printf("key is %s is not exist\n", key)
} else {
fmt.Printf("key is %s = %d \n", key, result)
}
}map的遍歷key,value
使用for ... range 的方法進行遍歷,獲取當中的值
func test4() {
rand.Seed(time.Now().UnixNano())
var a map[string]int
a = make(map[string]int, 1024)
for i := 0; i < 128; i++ {
key := fmt.Sprintf("stu%d", i)
value := rand.Intn(1000)
a[key] = value
}
for key, value := range a {
fmt.Printf("map[%s]=%d\n", key, value)
}
}map刪除元素
使用內(nèi)置的delete方法進行刪除
func test5() {
var a map[string]int
a = make(map[string]int, 16)
fmt.Printf("a = %#v \n", a)
a["stu01"] = 1000
a["stu02"] = 2000
a["stu03"] = 3000
fmt.Printf("a = %#v \n", a)
delete(a, "stu02")
fmt.Printf("DEL after a = %#v \n", a)
}刪除所有的,需要用for循環(huán),挨個刪除
map的長度
使用len內(nèi)置函數(shù)求出
map的復制
map是引用類型,在系統(tǒng)中,復制的時候,指向的內(nèi)存地址是一樣的,所以修改一個,其他的也會跟著變更
func test6() {
var a map[string]int
if a == nil {
a = make(map[string]int, 16)
a["stu01"] = 1000
a["stu02"] = 2000
a["stu03"] = 3000
fmt.Printf("a = %#v \n", a)
b := a
b["stu01"] = 8888
fmt.Printf("after modify a : %#v\n", a)
}
}map的切片
由于map的value可以是數(shù)組,或者int,所以在value是數(shù)組的時候,使用的時候,也需要先初始化
func main() {
rand.Seed(time.Now().UnixNano())
var s []map[string]int
s = make([]map[string]int, 5, 16)
for index, value := range s {
fmt.Printf("slice[%d] = %v \n", index, value)
}
fmt.Println()
s[0] = make(map[string]int, 16)
s[0]["stu01"] = 1000
s[0]["stu02"] = 2000
s[0]["stu03"] = 3000
for index, value := range s {
fmt.Printf("slice[%d] = %v \n", index, value)
}
}到此這篇關(guān)于golang-map的基本操作的文章就介紹到這了,更多相關(guān)golang map內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決Goland中利用HTTPClient發(fā)送請求超時返回EOF錯誤DEBUG
這篇文章主要介紹了解決Goland中利用HTTPClient發(fā)送請求超時返回EOF錯誤DEBUG,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12
Golang微服務框架Kratos實現(xiàn)Kafka消息隊列的方法
消息隊列是大型分布式系統(tǒng)不可缺少的中間件,也是高并發(fā)系統(tǒng)的基石中間件,所以掌握好消息隊列MQ就變得極其重要,在本文當中,您將了解到:什么是消息隊列?什么是Kafka?怎樣在微服務框架Kratos當中應用Kafka進行業(yè)務開發(fā),需要的朋友可以參考下2023-09-09
go 原生http web 服務跨域restful api的寫法介紹
這篇文章主要介紹了go 原生http web 服務跨域restful api的寫法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-04-04

