var MapName map[keyType]valueType
var warlords map[string]string
package mainimport "fmt"func main() {var warlords map[string]stringif warlords == nil {fmt.Printf("map为空")}else{fmt.Printf("map为:%+v",warlords)}
}
结果
map为空
MapName := make(map[keyType]valueType)
warlords := make(map[string]string)
package main
import "fmt"func main() {warlords := make(map[string]string)if warlords == nil {fmt.Printf("map为空")}else{fmt.Printf("map为:%+v",warlords)}
}
map为:map[]
在函数内可以直接声明并赋值
mapName := map[string]string{key1:value1,key2:value2……}
var warlords = map[string]string{"刘备":"徐州","袁绍":"河北","马腾":"西凉","刘表":"荆州"}
package mainimport "fmt"func main() {var warlords = map[string]string{"刘备":"徐州","袁绍":"河北","马腾":"西凉","刘表":"荆州"}if warlords == nil {fmt.Printf("map为空")}else{fmt.Printf("map为:%+v",warlords)}
}
结果
map为:map[刘备:徐州 刘表:荆州 袁绍:河北 马腾:西凉]
说明:
如上可见,map是没有顺序的,打印出的结果和我们赋值的顺序并不一致。
MapName[key1] = value1
warlords["孙权"] = "江东"
package main
import "fmt"func main() {//warlords := make(map[string]string)var warlords = map[string]string{"刘备":"徐州","袁绍":"河北","马腾":"西凉","刘表":"荆州"}warlords["孙权"] = "江东"fmt.Printf("map为:%+v",warlords)
}
语法
map为:map[刘备:徐州 刘表:荆州 孙权:江东 袁绍:河北 马腾:西凉]
for key,value := range MapName {……}
package mainimport "fmt"func main() {var warlords = map[string]string{"刘备":"徐州","袁绍":"河北","马腾":"西凉","刘表":"荆州"}for name,territory := range warlords {fmt.Println(name,":",territory)}
}
结果
刘备 : 徐州
袁绍 : 河北
马腾 : 西凉
刘表 : 荆州
if value,ok := MapName[key];ok{……
}
package mainimport "fmt"func main() {//定义mapvar warlords = map[string]string{"刘备":"徐州","袁绍":"河北","马腾":"西凉","刘表":"荆州"}//查询刘备的信息SearchTerritory("刘备",warlords)//查询曹操的信息SearchTerritory("曹操",warlords)
}// SearchTerritory 定义一个查询函数
func SearchTerritory(name string,warlords map[string]string)(){if territory,ok := warlords[name];ok {fmt.Printf("===========================\n%q 的信息已查到\n势力范围:%q\n",name,territory)}else{fmt.Printf("===========================\n未查到 %q 的信息",name)}
}
结果
===========================
"刘备" 的信息已查到
势力范围:"徐州"
===========================
未查到 "曹操" 的信息
delete(MapNam, key)
package mainimport "fmt"func main() {var warlords = map[string]string{"刘备":"徐州","袁绍":"河北","马腾":"西凉","刘表":"荆州"}fmt.Println("原map:",warlords)delete(warlords,"刘表")fmt.Println("现map:",warlords)}
结果
原map: map[刘备:徐州 刘表:荆州 袁绍:河北 马腾:西凉]
现map: map[刘备:徐州 袁绍:河北 马腾:西凉]