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. package.json和npm install、cnpm install 的問題

    問題:最近使用cnpm安装项目依赖后,运行项目出现样式错乱问题. 描述:最近项目开发,需求参插了很多个版本,所以在前端项目的主干上拉好几套分支代码.拉的分支并不会把node_modules也拉过去,所 ...

  2. gitlab安装随记

    gitlab安装 配置yum源 sudo vim /etc/yum.repos.d/gitlab-ce.repo 按照网上别人的例子,修改为清华的源 [gitlab-ce] name=Gitlab C ...

  3. 关于分布式代码管理工具git

    一.安装 Step1  进入官网https://www.git-scm.com/download/下载,然后安装,一直“下一步”即可 Step2  验证是否安装成功,在任意地方右键,菜单中含有Git ...

  4. 发现sql注入的一些技巧

    1.如果一个'导致错误,试着查看\'能否成功(因为反斜杠在MySQL中取消了单引号)2.你也可以尝试注释掉,--',看页面返回是否正常.3.如果正常的输入只是一个整数,你可以尝试减去一些量,然后查看减 ...

  5. UML之顺序图

    一 定义 顺序图是将交互关系表示为一个二维图.纵向是时间轴(生命线),时间沿竖线向下延伸.横向轴代表了在协作中各独立对象的类元角色.类元角色用生命线表示.当对象存在时,角色用一条虚线表示,当对象的过程 ...

  6. 从excel表中生成批量SQL,将数据录入到数据库中

    excel表格中有许多数据,需要将数据导入数据库中,又不能一个一个手工录入,可以生成SQL,来批量操作.     1.首先在第二行的H列,插入函数:=CONCATENATE("INSERT ...

  7. centos7初上手3-安装apache服务

    前两篇学习安装了mysql服务器,tomcat服务,这篇文章学习安装apache服务 1.执行yum install httpd,安装完成后查看httpd rpm -qa|grep httpd 2.新 ...

  8. raft共识算法

    raft共识算法 分布式一致性问题 如果说,服务器只有一个节点,那么,要保证一致性,没有任何问题,因为所有读写都在一个节点上发生.那如果server端有2个.3个甚至更多节点,要怎么达成一致性呢?下面 ...

  9. Hello vue.js的随笔记录

    数据双向绑定的script在组件定义位置后面才顶用. 使用它的话,引用js就好,比较简单. 声明一个vm对象,new Vue({}).这个构造里传一个对象,包含el:界面元素,data:数据,meth ...

  10. 软件测试:第二次作业(JUnit单元测试方法)

    一.JUnit是什么? JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework).JUnit测试是程序员测试, ...