You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
1.8 KiB
83 lines
1.8 KiB
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"sort"
|
|
)
|
|
|
|
func main() {
|
|
// 方式一
|
|
var m map[int]string // 声明一个map
|
|
fmt.Println(m)
|
|
m = map[int]string{} // 初始化一个map
|
|
fmt.Println(m)
|
|
|
|
// 方式二
|
|
var m2 map[int]string = map[int]string{}
|
|
fmt.Println(m2)
|
|
|
|
// 方式三
|
|
m3 := map[int]string{}
|
|
fmt.Println(m3)
|
|
|
|
// 设置、获取、删除
|
|
m3[1] = "Tinywan"
|
|
a := m3[1]
|
|
fmt.Println(m3) // map[1:Tinywan]
|
|
fmt.Println(a) // Tinywan
|
|
|
|
delete(m3, 1) // 删除一个map
|
|
fmt.Println(m3) // map[]
|
|
|
|
// 复杂map 的操作
|
|
var m5 map[int]map[int]string // 定义
|
|
m5 = make(map[int]map[int]string) // 通过 make 初始化 最外层的 map
|
|
|
|
m5[1] = make(map[int]string) // 针对外层value 的map进行初始化
|
|
m5[1][1] = "OK"
|
|
m_a := m5[1][1] // 取出map 的值赋予一个变量
|
|
fmt.Println(m_a) // OK
|
|
|
|
// 判断一个map 有没有被初始化,使用多返回值判断
|
|
m_b, ok := m5[2][1]
|
|
// 判断是否被初始化操作
|
|
if !ok {
|
|
m5[2] = make(map[int]string)
|
|
}
|
|
m5[2][1] = "OK b"
|
|
m_b, ok = m5[2][1]
|
|
fmt.Println(m_b, ok) // OK b true
|
|
|
|
// 迭代操作
|
|
s_map := make([]map[int]string, 5) // 以 map 为元素的slice 使用 make 创建一个切片,元素的slic
|
|
for _, v := range s_map {
|
|
v = make(map[int]string) // v 是值的拷贝
|
|
v[1] = "OK"
|
|
fmt.Println(v)
|
|
}
|
|
fmt.Println(s_map)
|
|
|
|
// 针对一个 map 直接操作
|
|
for i := range s_map {
|
|
s_map[i] = make(map[int]string)
|
|
s_map[i][1] = "OK"
|
|
fmt.Println(s_map[i])
|
|
}
|
|
fmt.Println(s_map)
|
|
|
|
// map 的间接排序
|
|
// map 集合
|
|
map01 := map[int]string{1: "a", 2: "b", 3: "n", 4: "c", 5: "p", 6: "f"}
|
|
// 切片
|
|
slice01 := make([]int, len(map01))
|
|
i := 0
|
|
for k, _ := range map01 {
|
|
slice01[i] = k
|
|
i++
|
|
}
|
|
|
|
fmt.Println(slice01) // 返回的是一个无序的数组:[5 6 1 2 3 4] [3 4 5 6 1 2]
|
|
sort.Ints(slice01)
|
|
fmt.Println(slice01) // 有序的数组:[1 2 3 4 5 6]
|
|
}
|