老奶奶可以看懂系列之---Golang的Map映射
Posted 星际迷航‖
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了老奶奶可以看懂系列之---Golang的Map映射相关的知识,希望对你有一定的参考价值。
前言
这里总结的Golang 笔记只适合有点编程基础的人看,比如Java
往期内容:
Map
Go语言中 map 是一种特殊的数据结构,一种元素对的无序集合,对应一个 key(索引)和一个 value(值),所以这个结构也称为关联数组或字典,这是一种能够快速寻找值的理想结构,给定 key,就可以迅速找到对应的 value。
与Java之中Map接口中对应的实现类差不多,HashMap、HashTable等。
Map特点
- map之前一定需要使用make创建空间。
- map中key是不能重复的,如果重复会覆盖前一次val存储新的val。
- map的val是可以相同的。
- map中的key-val是无序的。
- 初始分配的创建取决于size,产生映射的长度为0或者size可以省略,这种情况下就会分配一个小的起始的大小,map会自动扩容的。
创建Map的三种方式
Map的创建和使用有以下三种。
func Test1()
maps := make(map[string] string)
maps["陕西"] = "西安"
maps["山西"] = "太原"
fmt.Println(maps)
func Test2()
maps := map[string]string
"hero1": "songjiang",
"hero2": "wusong",
fmt.Println(maps)
func Test3()
var maps map[string]int
maps = make(map[string]int, 10)
maps["高数"] = 90
maps["英语"] = 60
maps["语文"] = 100
fmt.Println(maps)
Map的增加和删除
Map中增加直接使用maps[“varName”] = val。
Map中删除可以使用内置函数delete,如果对应key不存在的时候,delete的时候也不会报错,存在删除对应的key。
使用mapName[“KeyName”]可以查找Map
func main()
add := make(map[string]string)
add["shanxi"] = "xian"
add["shan`xi"] = "taiyuan"
add["fujian"] = "xiameng"
fmt.Println("原map:", add)
delete(add, "fujian")
fmt.Println("delete 之后:", add)
fmt.Println("map 查找")
val, ok := add["shanxi"]
if ok
fmt.Println(val ," 存在")
else
fmt.Println("val 不存在")
Map遍历
使用for-range遍历,map嵌套的话,第一个map的val就是内嵌map,下面介绍嵌套map遍历。
func main()
var maps map[string] map[string]string
maps = make(map[string] map[string]string)
maps["person1"] = make(map[string]string)
maps["person1"]["name"] = "wurui"
maps["person1"]["age"] = "23"
maps["person1"]["address"] = "baoji"
maps["person2"] = make(map[string]string)
maps["person2"]["name"] = "leo"
maps["person2"]["age"] = "23"
maps["person2"]["address"] = "xian"
for k1, v1 := range maps
for k2, v2 := range v1
fmt.Println(k1," : ", k2, ":", v2)
fmt.Println("-------------------------")
Map和切片一起使用
场景:创建一个[]map[type]type类型的切片,但是每个map元素还是需要进行make。
package main
import "fmt"
func main()
var monster []map[string]string
monster = make([]map[string]string, 2, 5)
monster[0] = make(map[string]string, 2)
monster[0]["name"] = "牛魔王"
monster[0]["age"] = "153"
monster[1] = make(map[string]string, 2)
monster[1]["name"] = "白骨精"
monster[1]["age"] = "123"
fmt.Println(monster)
pig := make(map[string]string, 2)
pig["name"] = "猪八戒"
pig["age"] = "235"
// 切片append添加元素
monster = append(monster, pig)
fmt.Println(monster)
Map小场景
描述:在一个小系统修改密码为88888888,首先判断有无当前用户,如果没有添加用户,设置初始密码88888888
package main
import "fmt"
func main()
user := make(map[string]map[string]string)
user["join"] = make(map[string]string)
user["join"]["pwd"] = "dsds"
user["join"]["nickName"] = "fsa"
fmt.Println(user)
modifyUser(user, "tom")
modifyUser(user, "join")
fmt.Println(user)
func modifyUser(user map[string]map[string]string, name string)
if user["name"] != nil
user[name]["pwd"] = "8888888"
else
// 没有这个用户
user[name] = make(map[string]string)
user[name]["pwd"] = "8888888"
user[name]["nickName"] = "NickName:" + name
如果文章内容有错误,还请大佬们指导,防止误人子弟。继续冲冲冲!
以上是关于老奶奶可以看懂系列之---Golang的Map映射的主要内容,如果未能解决你的问题,请参考以下文章