前言
这里总结的Golang 笔记只适合有点编程基础的人看,比如Java
往期内容:
Go语言中 map 是一种特殊的数据结构,一种元素对的无序集合,对应一个 key(索引)和一个 value(值),所以这个结构也称为关联数组或字典,这是一种能够快速寻找值的理想结构,给定 key,就可以迅速找到对应的 value。
与Java之中Map接口中对应的实现类差不多,HashMap、HashTable等。
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中增加直接使用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 不存在")
}
}
使用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[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)
}
描述:在一个小系统修改密码为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
}
}
如果文章内容有错误,还请大佬们指导,防止误人子弟。继续冲冲冲!