1,定义元素为map类型的切片
package main
import (
"fmt"
)
func main() {
var qp = make([]map[string]string, 3, 3)
fmt.Println(qp[0]) //打印切片0下标下是否有值 如果为空则默认为nil
fmt.Println(qp[0] == nil) //qp[0] == nil 为true
if qp[0] == nil {
qp[0] = make(map[string]string)
qp[0]["username"] = "zhangsan"
qp[0]["email"] = "zhansan@qq.com"
}
if qp[1] == nil {
qp[1] = make(map[string]string)
qp[1]["username"] = "李四"
qp[1]["email"] = "lisi@qq.com"
}
fmt.Println(qp)
}
2,循环遍历类型为map的切片
package main
import (
"fmt"
)
func main() {
var qp = make([]map[string]string, 2, 2)
if qp[0] == nil {
qp[0] = make(map[string]string)
qp[0]["username"] = "zhangsan"
qp[0]["email"] = "zhansan@qq.com"
}
if qp[1] == nil {
qp[1] = make(map[string]string)
qp[1]["username"] = "李四"
qp[1]["email"] = "lisi@qq.com"
}
for _, v := range qp {
//mt.Println(v) //打印第一维数据
for _, vv := range v {
fmt.Println(vv)
}
}
}
把map类型的值定义成切片
package main
import "fmt"
func main() {
//把map类型的值定义成切片
userInfo := make(map[string][]string)
userInfo["hobby"] = []string{
"吃饭",
"唱歌",
"谈恋爱",
}
userInfo["work"] = []string{
"工作",
"出差",
"演唱会",
}
fmt.Println(userInfo)
for _, v := range userInfo {
for _, vv := range v {
fmt.Println(vv)
}
}
}
map类型的数据 是值类型还是引用类型呢? (引用数据类型)
map的排序 map里的元素是无序的
①升序排序
给这个map排序
package main
import "fmt"
func main() {
//修改map的值
score := make(map[int]int,100)
score[100] = 80
score[1] = 60
score[20] = 70
score[49] =10
fmt.Println(score)
}
默认是无序的
思路1 可以把key 单独拿出来放到切片里
package main
import (
"fmt"
"sort"
)
func main() {
//修改map的值
score := make(map[int]int, 100)
score[100] = 80
score[1] = 60
score[20] = 70
score[49] = 10
fmt.Println(score)
var keys []int
for k, _ := range score {
keys = append(keys, k)
}
//fmt.Println(keys)
//对切片升序排序
sort.Ints(keys) //[20 1 100 49]
//fmt.Println(keys) //[1 20 49 100]
for _, v := range keys {
fmt.Printf("k=%v v=%v\n", v, score[v])
}
}