0
点赞
收藏
分享

微信扫一扫

Go编程之基础数据类型Map


Golang之Map

一、创建和赋值

m := map[string]int{"one", 1, "tow": 2, "three": 3}
m1 := map[string]int{}
m1["one"] = 1
m2 := make(map[string]int, 10)

maps := make(map[string]string)

maps["one"] = "zhangsan"
maps["two"] = "tom"
maps["three"] = "mary"

for v, k := range maps{
fmt.Println(k, v)
}

二、删除

func TestMap(t *testing.T) {
item := map[int]string{
1: "12345",
2: "world",
3: "long",
}

t.Log(item)

delete(item, 1)

t.Log(item)

}

三、修改

func TestUpdate(t *testing.T) {
item := map[int]string{
1: "12345",
2: "world",
3: "long",
}
t.Log(item)
item[1] = "hello"
t.Log(item)

}

type Student struct {
Id int
Name string
}

func TestObj(t *testing.T) {

data := make(map[int]*Student)
data[1] = &Student{
Id: 1,
Name: "tom",
}

data[2] = &Student{
Id: 2,
Name: "zs",
}

t.Log(data[1])
t.Log(data[2])

one := data[1]
one.Name = "asas"

t.Log(data[1])
t.Log(data[2])

}

四、map排序

func TestMapSort(t *testing.T) {
items := map[string]int{
"Java": 1,
"Python": 2,
"C++": 3,
"C#": 4,
"PHP": 5,
"JavaScript": 6,
}

var SortString []string
for k := range items {
SortString = append(SortString, k)
}

sort.Strings(SortString)

for _, k := range SortString {
fmt.Println("key:", k, "Value:", items[k])
}

}

五、map嵌套

type EmployeeInformation map[string]int

func TestMapNested(t *testing.T) {
items := make(map[string]EmployeeInformation)
EmployeeItem := make(EmployeeInformation)
EmployeeItem["beijing"] = 1
EmployeeItem["tianjin"] = 2
EmployeeItem["hebei"] = 3

items["address1"] = EmployeeItem
items["address2"] = EmployeeInformation{
"shandong": 11,
"fuzhou": 23,
}

t.Log(items)
}

func TestCitys(t *testing.T) {
// 省
province := make(map[string]map[string][]string)
// 市
city := make(map[string][]string)
// 景区
scenery := make(map[string][]string)

scenery["西安"] = []string{"秦始皇兵马俑","大雁塔","大唐芙蓉园","华清池","黄巢堡国家森林公园","西安碑林博物馆"}
scenery["安康"] = []string{"中坝大峡谷","香溪洞","安康双龙生态旅游度假区"}

city["西安市区"] = []string{"新城区","碑林区","莲湖区","灞桥区","未央区","雁塔区","阎良区","临潼区","长安区","高陵区","咸阳区"}
city["安康市区"] = []string{"汉滨区","汉阴县","石泉县","宁陕县","紫阳县","岚皋县","平利县"}

province["陕西省"] = city

city["西安景区"] = scenery["西安"]
city["安康景区"] = scenery["安康"]

for k, v := range province {
fmt.Println(k, v)
for x, y := range v {
fmt.Println(x, y)
}
}

}

六、make和new

  • make 只能为 slice、map或 channel 类型分配内存并初始化,同时返回一个有初始值的 slice、map 或 channel 类型引用,不是指针。
  • 内建函数 new 用来分配内存,它的第一个参数是一个类型,不是一个值,它的返回值是一个指向新分配类型零值的指针。


举报

相关推荐

0 条评论