map--字典

map的基本使用:

package main

import "fmt"

// 先声明

type PersonInfo struct {
id string
name string
addr string
}
func main() {
// map是一堆键值对的未排序集合,就像python中的字典一样
var PersonDB map[string] PersonInfo
PersonDB = make(map[string] PersonInfo) //往map中插入几条数据
PersonDB["wualin"] = PersonInfo{"001","wualin","xinyu"}
PersonDB["zhang"] = PersonInfo{"002","zhang","xiushui"} // 从map中取数据,查找关键字为"wualin"的数据
person1 := PersonDB["wualin"]
fmt.Println(person1)
fmt.Println(person1.name) // 通过 . 取map中的数据 person2,ok := PersonDB["zhang"]
if ok{// ok是一个返回的bool类型,返回True则表示找到了对应的数据
fmt.Println(person2)
} else{
fmt.Println("没有找到zhang...")
}
}
  • 变量声明

map的声明基本上没有多余的元素,比如:

var PersonDB map[string] PersonInfo

PersonDB是map变量名,string是键的类型,PersionInfo则是其中存放值的类型

  • 创建:

使用go语言内置的函数make()来创建一个新map,例:

PersonDB = make(map[string] PersonInfo)

也可以选择是否在创建时置顶该map的初始存储能力,例:

PersonDB = make(map[string] PersonInfo,100)

创建并初始化map,例:

PersionDB = map[string] PersionInfo{
"1234":PersionInfo{"1","wualin","xinyu"}
}
}
  • 元素赋值
PersonDB["wualin"] = PersonInfo{"001","wualin","xinyu"}
  • 元素删除

Go语言提供了一个内置函数delete(),用于删除容器内的元素

delete(PersionDB,"wualin")

如果键"wualin"不存在,那么这个调用将什么都不会发生

  • 元素查找

根据关键字从map取数据,例:

value,ok := PersionDB["wualin"]
if ok{ // 找到了
// 处理找到的value
} }

使用ok可以快速检查是否找到数据,不需要去判断value是否为空

golang的map的更多相关文章

  1. Golang中map的三种声明方式和简单实现增删改查

    package main import ( "fmt" ) func main() { test3 := map[string]string{ "one": & ...

  2. 总结golang之map

    总结golang之map 2017年04月13日 23:35:53 趁年轻造起来 阅读数:18637 标签: golangmapgo 更多 个人分类: golang   版权声明:本文为博主原创文章, ...

  3. golang 中 map 转 struct

    golang 中 map 转 struct package main import ( "fmt" "github.com/goinggo/mapstructure&qu ...

  4. golang之map的使用声明

    1.map的基本介绍 map是key-value数据结构,又称为字段或者关联数组.类似其它编程语言的集合,在编程中是经常使用到的 2.map的声明 1)基本语法 var map 变量名 map[key ...

  5. Golang:sync.Map

    由于map在gorountine 上不是安全的,所以在大量并发读写的时候,会出现错误. 在1.9版的时候golang推出了sync.Map. sync.Map 通过阅读源码我们发现sync.Map是通 ...

  6. golang中map原理剖析

    1. golang中的map有自己的一套实现原理,其核心是由hmap和bmap两个结构体实现的 2.  初始化map package main func main() { // 初始化一个可容纳10个 ...

  7. golang笔记——map

    通过 new 创建的引用类型对象是不完整创建,比如 map,它仅分配了字典类型本身所需的内存(指针包装),而没有分配键值存储内存,也没有初始化散列桶等内部属性,因此无法工作,如下代码就是错误的: p ...

  8. 【GoLang】GoLang 遍历 map、slice、array方法

    代码示例: map1 := make(map[string]string) map1["a"] = "AAA" map1["b"] = &q ...

  9. Golang 嵌套map赋值办法

    http://my.oschina.net/sol/blog/159060 m := map[string]map[string]string{} mm, ok := m["kkk" ...

随机推荐

  1. 解决反射型XSS漏洞攻击

    对于程序员来说安全防御,无非从两个方面考虑,要么前端要么后台. 一.首先从前端考虑过滤一些非法字符. 前端的主控js中,在<textarea> 输入框标签中,找到点击发送按钮后,追加到聊天 ...

  2. C# 今天时间 今天结束时间

    var startTime = DateTime.UtcNow.ToString(timeFormat); ).AddSeconds(-).ToUniversalTime().ToString(tim ...

  3. IE10打印预览无反应

    1. 建议您打开IE后,按Alt键,选择”工具“-”兼容性视图设置“,将网站添加到兼容性视图列表中,看情况如何.2.internet选项-高级-启用保护模式 勾去掉 看看行不行3.按下“Windows ...

  4. 20175212课下作业 MyCP

    20175212课下作业 MyCP 要求 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2 ...

  5. CentOS7+Win10双系统的CentOS7启动bug

    自从安装了CentOS7系统,它的启动时间常常要三分钟以上,实在忍不了. 以下是CentOS7系统的启动记录片断: May 18 13:04:05 DESKTOP-23V3CHU kernel: XF ...

  6. FastCGI 进程意外退出造成500错误

    在一台新服务器上,安装新网站,之前只放至了一个网站.是服务器商配置好的,非集成环境. 添加了一个新站,路径都制定好了,但是在访问时出现了500错误.提示貌似是php的问题,但是之前的网站,运行的是di ...

  7. java AQS(AbstractQueuedSynchronizer)同步器详解

    除了内置锁(synchronized)外,java AQS(AbstractQueuedSynchronizer)同步器几乎是所有同步容器,同步工具类的基础.ReentrantLock.Reentra ...

  8. 电脑小白和ta的小白电脑——MySQL数据库

    数据库我选择了MySQL,因为据说MySQL是最流行的关系型数据库管理系统,在WEB应用方面 MySQL 是最好的RDBMS之一了,而且,免费呀! MySQL数据库开发环境的配置 (一)下载MySQL ...

  9. Mybatis第一天

    Mybatis第一天   框架课程 1.   课程计划 第一天: 1.Mybatis的介绍 2.Mybatis的入门 a)       使用jdbc操作数据库存在的问题 b)      Mybatis ...

  10. ajax请求, 前后端, 代码示例

    [博客园cnblogs笔者m-yb原创,转载请加本文博客链接,笔者github: https://github.com/mayangbo666,公众号aandb7,QQ群927113708] http ...