[GO]map的使用

Posted baylorqu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[GO]map的使用相关的知识,希望对你有一定的参考价值。

map的格式:info := map[int]string{111:"baylor"}

它是一个key:value的形式,方括号里面是key的类型,后面是value的类型,它是无序的,我们无法决定它的返回顺序

需要注意的是:在同一个map里,key的值必须是唯一的,而且必须是支持==或者!=操作符的类型,切片、函数、以及包含切片的结构类型这些由于具有引用语义,所以不能做为映射的键。比如:info := [ []string ]int{},这样的一个类型就报错

 

package main

import "fmt"

func main()  {
    var m1 map[int]string
    fmt.Println("m1 = ", m1)
    //对于一个map来说,只有长度,没有容量的说法
    fmt.Println("m1 lenth = ", len(m1))
    //可以通过make创建
    m2 := make(map[int]string)
    fmt.Println("m2 lenth = ", len(m2))
    //可以指定长度,当然这里只是指定了长度,如果在没有元素的情况下,打印出m3的长度仍然为0
    //只有给m3赋某个值的时候,打印长度才会有值
    m3 := make(map[int]string, 10)
    fmt.Println("m3 lenth = ", len(m3))
    m3[1] = "balorqu"
    m3[2] = "go"
    m3[3] = "c++"
    fmt.Println("m3 = ", m3)
    fmt.Println("m3 lenth = ", len(m3))
}

执行结果

m1 =  map[]
m1 lenth =  0
m2 lenth =  0
m3 lenth =  0
m3 =  map[2:go 3:c++ 1:balorqu]
m3 lenth =  3

 

以上是关于[GO]map的使用的主要内容,如果未能解决你的问题,请参考以下文章

解决go: go.mod file not found in current directory or any parent directory; see ‘go help modules‘(代码片段

你知道的Go切片扩容机制可能是错的

将多个输出中的hls属性设置为单独的片段代码

go - 更为安全的使用 sync.Map 组件

[Go] 使用字面值方式初始化map

[Go] 使用字面值方式初始化map