定义:使用的时候需要进行初始化 要么直接赋值,要么使用make进行初始化
package main
import (
"fmt"
)
func main() {
var strMap map [string] string = make(map[string]string)
strMap["k1"]="v1"
strMap["k2"]="v2"
strMap["k3"]="v3"
fmt.Printf("%v\n",strMap)
for key,_ := range strMap{
fmt.Printf("%v\n",strMap[key])
}
}
切片和map的变量声明
var a []int = make([]int,2,10)
var a = []int{1,2,3}
var b map[string]string = make(map[string]string)
var b = map[string]string{
"k1":"v1",
"k2":"v2",
}
map的增删改查
package main
import (
"fmt"
)
func main() {
var strMap map[string]string = make(map[string]string)
//新增
strMap["k1"] = "v1"
strMap["k2"] = "v2"
strMap["k3"] = "v3"
strMap["k4"] = "v4"
//修改
strMap["k1"] = "k1v1"
//删除
delete(strMap,"k2")
//查询
for key,value := range strMap{
fmt.Printf("key:%v,value:%v\n",key,value)
}
}
map中有切片
package main
import (
"fmt"
)
func main() {
var strMap map[string][]int = make(map[string][]int)
var intS1 = []int{1,2,3}
var intS2 = []int{2,3,4}
//新增
strMap["k1"] = intS1
strMap["k2"] = intS2
//查询
for key,value := range strMap{
fmt.Printf("key:%v,value:%v\n",key,value)
}
}
切片中有map
package main
import (
"fmt"
)
func main() {
strMap1 := map[string]string{
"k1":"v1",
"k2":"v2",
}
strMap2 := map[string]string{
"k3":"v3",
"k4":"v4",
}
var s = []map[string]string{strMap1,strMap2}
//查询
for key,value := range s{
fmt.Printf("key:%v,value:%v\n",key,value)
}
}
按照指定顺序遍历map
func main() {
rand.Seed(time.Now().UnixNano()) //初始化随机数种子
var scoreMap = make(map[string]int, 200)
for i := 0; i < 100; i++ {
key := fmt.Sprintf("stu%02d", i) //生成stu开头的字符串
value := rand.Intn(100) //生成0~99的随机整数
scoreMap[key] = value
}
//取出map中的所有key存入切片keys
var keys = make([]string, 0, 200)
for key := range scoreMap {
keys = append(keys, key)
}
//对切片进行排序
sort.Strings(keys)
//按照排序后的key遍历map
for _, key := range keys {
fmt.Println(key, scoreMap[key])
}
}