golang的map
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的更多相关文章
- Golang中map的三种声明方式和简单实现增删改查
package main import ( "fmt" ) func main() { test3 := map[string]string{ "one": & ...
- 总结golang之map
总结golang之map 2017年04月13日 23:35:53 趁年轻造起来 阅读数:18637 标签: golangmapgo 更多 个人分类: golang 版权声明:本文为博主原创文章, ...
- golang 中 map 转 struct
golang 中 map 转 struct package main import ( "fmt" "github.com/goinggo/mapstructure&qu ...
- golang之map的使用声明
1.map的基本介绍 map是key-value数据结构,又称为字段或者关联数组.类似其它编程语言的集合,在编程中是经常使用到的 2.map的声明 1)基本语法 var map 变量名 map[key ...
- Golang:sync.Map
由于map在gorountine 上不是安全的,所以在大量并发读写的时候,会出现错误. 在1.9版的时候golang推出了sync.Map. sync.Map 通过阅读源码我们发现sync.Map是通 ...
- golang中map原理剖析
1. golang中的map有自己的一套实现原理,其核心是由hmap和bmap两个结构体实现的 2. 初始化map package main func main() { // 初始化一个可容纳10个 ...
- golang笔记——map
通过 new 创建的引用类型对象是不完整创建,比如 map,它仅分配了字典类型本身所需的内存(指针包装),而没有分配键值存储内存,也没有初始化散列桶等内部属性,因此无法工作,如下代码就是错误的: p ...
- 【GoLang】GoLang 遍历 map、slice、array方法
代码示例: map1 := make(map[string]string) map1["a"] = "AAA" map1["b"] = &q ...
- Golang 嵌套map赋值办法
http://my.oschina.net/sol/blog/159060 m := map[string]map[string]string{} mm, ok := m["kkk" ...
随机推荐
- mysql排序之ORDER BY IF、ORDER BY配合IN、TIMESTAMPDIFF、TIMESTAMPADD、FIELD
1.order by if 排序 SELECT * FROM pet ORDER BY if (species='snake',0,1),species;--species为snake的行数放置到了查 ...
- java使用格式String型转成Date型
public class TimeTwo { public static void main(String[] args) throws ParseException{ String s = &quo ...
- Android Studio修改apk打包生成名称
在app的build.gradle文件的android{}括号里添加: android.applicationVariants.all { variant -> variant.outputs. ...
- Android向通讯录添加联系人的一般方法
Android向通讯录添加联系人的一般方法 以一个简单的例子加以说明,记得需要相应的权限: 测试代码,关键的内容就在add函数里面. package zhangphil.demo; import an ...
- mysql5.7设置默认编码
1.通过 show variables like '%char%';查看MySQL字符集情况 mysql> show variables like '%char%';+------------- ...
- erlang证书加密
-module(...). -include("ewp.hrl").-include("backend.hrl").-include_lib("pub ...
- SQL-57 使用含有关键字exists查找未分配具体部门的员工的所有信息。
题目描述 使用含有关键字exists查找未分配具体部门的员工的所有信息.CREATE TABLE `employees` (`emp_no` int(11) NOT NULL,`birth_date` ...
- SVN分支与合并【超详细的图文教程】(转载)
SVN分支与合并 一. 分支与合并的概念 二. SVN分支的意义 三. 如何创建分支与合并分支 一.分支与合并的概念: 分支:版本控制系统的一个特性是能够把各种修改分离出来放在开发品的一个分割线上.这 ...
- Server Tomcat v7.0 Server at localhost failed to start.解决办法
今天,导入maven项目时,报的错,因为之前没遇到过这个错,一时抓不到头绪,最后请技术大神帮忙解决.他首先看的eclipse的配置,是否与项目对应,在看看.seting 文件中的名称是否与项目名对应, ...
- 后台管理系统之“图片上传” --vue
图片上传(基于vue) 相信上传图片是所有系统必备的功能吧,工作中的第一个管理系统就在上传图片的功能上卡顿了一整天. 当时用的elementUI组件,但是由于样式和设计图样式差别较大再加上原生相较好理 ...