Go速成无压力【九】:映射(Maps)

(一)Maps

一个map是映射到键值对的
值为 0 的map是 nil 值;一个nil 值的map并没有keys , 也不能添加值;
make 函数可以返回一个被赋予类型,且被初始化准备可以投入使用的map

package main
import "fmt"
type vertex struct{
	x , y float64
}
var m map[string]Vertex

func main(){
	m = make(map[string]vertex)
	m["东风 不败"] = vertex{
		120,40,
	}
	fmt.Println(m["东风"])
} 

在这里插入图片描述




(二)Map文法

Map字段有些像结构体文法,但是Map字段的值是必须的

package main

import "fmt"

type vertex struct {
	x, y float64
}

var m = map[string]vertex{
	"迪迦 泰罗": vertex{
		10.213, -34.98123,
	},
	"M78": Vertex{
		677.56202, 122.31408,
	},
}

func main() {
	fmt.Println(m)
}

在这里插入图片描述



(三)Map字段知识扩展

如果顶级类型只是一个类型名字,你可以忽略来自字段的元素的类型

package main
import "fmt"

type vertex struct{
	a,b string
}

var m = map[string]vertex{
	"迪迦奥特曼":{"他是一个奥特曼","而且人又帅"},
	"M78星云":{"这是奥特曼的故乡","名为M78"},
}

func main(){
	fmt.Println(m)
}

在这里插入图片描述



(四)不同类型的映射

在映射 m 中插入或者升级一个元素

m[key] = elem

取回一个元素

elem = m[key]

删除一个元素

delete(m,key)

使用两个声明的值去测试一个值

elem , ok = m[key]

如果key 是在 m 中,则ok 为true , 否则为 false
如果key 不是在map 中,那么elem 是具有映射的类型的零值
如果 elem 或者 ok 任然没有被声明,你可以使用这样的短声明:

elem , ok := m[key]

实战演示

package main
import "fmt"
func main(){
	m := make(map[string]int)
	m["编号"]=27
	fmt.Println("编号值为:",m["编号"])
	m["编号"]=18
	fmt.Println("编号值为:",m["编号"])
	delete(m,"编号")
	fmt.Println("编号值为:",m["编号"])
	v , ok := m["编号"]
	fmt.Println("编号值为:",v,"真假:",ok)
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_41136216/article/details/106768159
今日推荐