Go语言中的map怎么使用

map 映射键到值:

map 在使用之前必须用 make 来创建(不是 new);一个值为 nil 的 map 是空的,并且不能赋值。

复制代码 代码如下:

package mainimport "fmt"type Vertex struct {    Lat, Long float64}var m map[string]Vertexfunc main() {    m = make(map[string]Vertex)    m["Bell Labs"] = Vertex{        40.68433, 74.39967,    }    fmt.Println(m["Bell Labs"])}

map 的文法跟结构体文法相似,不过键名是必须的。

package mainimport "fmt"type Vertex struct {    Lat, Long float64}var m = map[string]Vertex{    "Bell Labs": Vertex{        40.68433, -74.39967,    },    "Google": Vertex{        37.42202, -122.08408,    },}func main() {    fmt.Println(m)}

如果顶层类型只有类型名的话,可以在文法的元素中省略键名。

package main
import "fmt"
type Vertex struct {
    Lat, Long float64
}
var m = map[string]Vertex{
    "Bell Labs": {40.68433, -74.39967},
    "Google":    {37.42202, -122.08408},
}
func main() {
    fmt.Println(m)
}

修改map:

在 map m 中插入或修改一个元素:

m[key] = elem

获得元素:

复制代码 代码如下:

elem = m[key]

删除元素:

复制代码 代码如下:

delete(m, key)

通过双赋值检测某个键存在:

复制代码 代码如下:

elem, ok = m[key]

如果 key 在 m 中, ok 是 true。 否则,ok 是 false 并且 elem 是 map 的元素类型的零值。

同样的,当从 map 中读取某个不存在的键时,结果是 map 的元素类型的零值。

package main
import "fmt"
func main() {
    m := make(map[string]int)
    m["Answer"] = 42
    fmt.Println("The value:", m["Answer"])
    m["Answer"] = 48
    fmt.Println("The value:", m["Answer"])
    delete(m, "Answer")
    fmt.Println("The value:", m["Answer"])
    v, ok := m["Answer"]
    fmt.Println("The value:", v, "Present?", ok)
}

原创文章,作者:RUMCP,如若转载,请注明出处:https://www.beidanyezhu.com/a/29745.html

(0)
RUMCP的头像RUMCP
上一篇 2025-02-12 21:51:04
下一篇 2025-02-12

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

分享本页
返回顶部