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. XAMPP启动Apache时发生ERROR

    XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建站集成软件包,是一个易于安装且包含 MySQL.PHP 和 Perl 的 Apache 发行版.XAMPP 的确非常容易安装和 ...

  2. html和css进阶

    html和css进阶 相对地址与绝对地址 网页上引入或链接到外部文件,需要定义文件的地址,常见引入或链接外部文件包括以下几种: <!-- 引入外部图片 --> <img src=&q ...

  3. markdown在线编辑插件mditor

    官方地址 https://bh-lay.github.io/mditor/ ##使用方法 #1.页面添加dom ```javascript <textarea id="md_edito ...

  4. select top 1 和select top 1 with ties * from SC 的区别

    select top1 : * FROM SC ORDER BY score DESC 运行结果如下: sc表数据查询select top 1 S# C# Score 001 03 120 WITH ...

  5. iframe的缺点

    *iframe会阻塞主页面的Onload事件: *搜索引擎的检索程序无法解读这种页面,不利于SEO; *iframe和主页面共享连接池,而浏览器对相同域的连接有限制,所以会影响页面的并行加载. 使用i ...

  6. 浅谈C++的智能指针

    我们使用智能指针来自动运行管理内存,避免对原始指针的使用不当而造成内存泄漏. ------------------------------------------------------------- ...

  7. Intellij 代理抛出异常错误: java.rmi.server.ExportException: Port already in use: 1099,端口被占用

    代理抛出异常错误: java.rmi.server.ExportException: Port already in use: 1099 端口被占用 解决方案: 1.查找出占用进程id 2.杀死进程 ...

  8. JAVAEE第三周

    2.背景:看到Session时,感到很熟悉,毕竟涉及到过类似的编程,用得最多的地点就是保存客户端的信息和记录,比如说你已经登陆过某个网站,下次访问时不想要麻烦的重新登陆你就就可以使用这个机制.Sess ...

  9. winfrom窗体中嵌套WPF控件

    前言 本文主要介绍如何在winfrom窗体中嵌套WPF控件, 一来是自己记录一下,而来希望能对有需要的朋友提供实现思路. 如有错误请指出...下面进入正题... -1.前期准备 准备一个建立好的win ...

  10. 作业:K-means算法应用:图片压缩

    from sklearn.datasets import load_sample_image from sklearn.cluster import KMeans import matplotlib. ...