go中map的基本介绍

一点睛

map 是 key-value 数据结构,又称为字段数组或者关联数组。

二 map 的声明

1 基本语法

var map 变量名 map[keytype]valuetype

2 key的类型

golang 中的 map,key 可以是很多种类型。

例如

bool、数字、string、指针、channel , 还可以是只包含前面几个类型的接口、结构体、数组。

通常 key 为 int、string。

注意

slice、map 和 function 不可以。因为这几个没法用 == 来判断。

3 valuetype的类型

valuetype 的类型和 key 基本一样,这里不再赘述。

通常为: 数字(整数,浮点数)、string、map、struct。

4 map 声明的举例

var a map[string]string

var a map[string]int

var a map[int]string

var a map[string]map[string]string

注意

声明是不会分配内存的,初始化需要 make ,分配内存后才能赋值和使用。

5实战

package main

import (
   "fmt"
)

func main() {
   // map的声明和注意事项
   var a map[string]string
   // 在使用 map 前,需要先 make,make 的作用就是给 map 分配数据空间
   //a = make(map[string]string, 10)
   a = make(map[string]string)
   a["no1"] = "宋江"
   a["no2"] = "吴用"
   a["no1"] = "武松"
   a["no3"] = "吴用"
   fmt.Println(a)
}

6测试

map[no1:武松 no2:吴用 no3:吴用]

7 说明

a map 在使用前一定要 make。

b map 的 key 不能重复,如果重复了,则以最后这个 key-value 为准。

c map 的 value 是可以相同的。

d map 的 key-value 是无序。

e make 内置函数

三 map 的使用

1代码

package main

import (
   "fmt"
)

func main() {
   // 方式一
   var a map[string]string
   // 在使用 map 前,需要先 make, make 的作用就是给map分配数据空间。
   a = make(map[string]string, 10)
   a["no1"] = "宋江"
   a["no2"] = "吴用"
   a["no1"] = "武松"
   a["no3"] = "吴用"
   fmt.Println(a)
   // 方式二
   cities := make(map[string]string)
   cities["no1"] = "北京"
   cities["no2"] = "天津"
   cities["no3"] = "上海"
   fmt.Println(cities)
   // 方式三
   heroes := map[string]string{
      "hero1": "宋江",
      "hero2": "卢俊义",
      "hero3": "吴用",
   }
   heroes["hero4"] = "林冲"
   fmt.Println("heroes=", heroes)
}

2测试

map[no1:武松 no3:吴用 no2:吴用]
map[no1:北京 no2:天津 no3:上海]
heroes= map[hero4:林冲 hero1:宋江 hero2:卢俊义 hero3:吴用]

四实战

1要求

要存放 3 个学生信息, 每个学生有 name 和 sex 信息。

2 思路

使用 map[string]map[string]string

3 代码

package main

import "fmt"

func main() {
   studentMap := make(map[string]map[string]string)
   studentMap["stu01"] = make(map[string]string, 3)
   studentMap["stu01"]["name"] = "tom"
   studentMap["stu01"]["sex"] = "男"
   studentMap["stu01"]["address"] = "北京长安街"
   studentMap["stu02"] = make(map[string]string) // 这句话不能少
   studentMap["stu02"]["name"] = "mary"
   studentMap["stu02"]["sex"] = "女"
   studentMap["stu02"]["address"] = "上海黄浦江"
   fmt.Println(studentMap)
   fmt.Println(studentMap["stu02"])
}

4测试

map[stu01:map[name:tom sex:男 address:北京长安街] stu02:map[name:mary sex:女 address:上海黄浦江]]

map[name:mary sex:女 address:上海黄浦江]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值