Go语言容器
Map 是一种无序的键值对的集合。Map 最重要的一点是通过 key 来快速检索数据,key 类似于索引,指向数据的值。
Map 是一种集合,所以我们可以像迭代数组和切片那样迭代它。不过,Map 是无序的,我们无法决定它的返回顺序,这是因为 Map 是使用 hash 表来实现的。
键必须是支持相等运算符 ("=="、"!=") 类型, 如 number、string、 pointer、array、struct,以及对应的 interface。
值可以是任意类型,没有限制。
定义 Map
第一种,声明一个Map:
var m map[int]string
Map定义并初始化
var m1 map[int]string = map[int]string{: "Linux", : "Python"}
var m2 = map[int]string{: "Java", : "Golang"}
第二种,通过make来创建Map
var m1 map[int]string = make(map[int]string, )
var m2 = make(map[int]string, )
第三种,通过 := 语法来定义Map
m1 := map[int]string{}
m2 := make(map[int]string, )
Map操作
插入操作:
package main
import "fmt"
func main() {
m := map[string]string{"key0": "Linux", "key1": "Python"}
fmt.Printf("插入前:map m : %v\n", m)
m["key2"] = "oldboy"
fmt.Printf("插入后:map m : %v\n", m)
}
更新操作:
package main
import "fmt"
func main() {
m := map[string]string{"key0": "Linux", "key1": "Python"}
fmt.Printf("更新前:map m : %v\n", m)
m["key1"] = "Golang"
fmt.Printf("更新后:map m : %v\n", m)
}
查找操作:
package main
import "fmt"
func main() {
m := map[string]string{"key0": "Linux", "key1": "Python"}
val, ok := m["key0"]
if ok {
fmt.Printf("查找操作:key0 => %v\n", val)
}
}
删除操作:
package main
import "fmt"
func main() {
m := map[string]string{"key0": "Linux", "key1": "Python"}
fmt.Printf("删除前:map m : %v\n", m)
delete(m, "key1")
fmt.Printf("删除后:map m : %v\n", m)
}
删除操作,如果 key 不存在,不会出错。
package main
import "fmt"
func main() {
m := map[string]string{"key0": "Linux", "key1": "Python"}
fmt.Printf("删除前:map m : %v\n", m)
delete(m, "key10")
fmt.Printf("删除后:map m : %v\n", m)
}
求长度:
package main
import "fmt"
func main() {
m := map[string]string{"key0": "Linux", "key1": "Python"}
len := len(m)
fmt.Printf("map m 长度: %v\n", len)
}
注意:不可以在map上使用cap()方法。
package main
import "fmt"
func main() {
m := map[string]string{"key0": "Linux", "key1": "Python"}
cap := cap(m)
fmt.Printf("map's cap is %v\n", cap)
}
编译错误:
./main.go::: invalid argument m (type map[string]string) for cap
Go语言容器的更多相关文章
- 03. Go 语言容器
Go语言容器(container) 变量在一定程度上能满足函数及代码要求.如果编写一些复杂算法.结构和逻辑,就需要更复杂的类型来实现.这类复杂类型一般情况下具有各种形式的存储和处理数据的功能,将它们称 ...
- (二)羽夏看C语言——容器
写在前面 由于此系列是本人一个字一个字码出来的,包括示例和实验截图.本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正. 如有好的建议,欢迎反馈.码字不易,如果本篇 ...
- C语言如何实现继承及容器
继承的概念 继承是面向对象软件技术当中的一个概念,与多态.封装共为面向对象的三个基本特征.继承可以使得子类具有父类的属性和方法或者重新定义,追加属性和方法. 面向对象中的重要概念就是类,在我们熟知的编 ...
- Go语言目录
为什么学习Go语言 第一章 环境搭建 Windows搭建Go语言环境 第二章 Go语言基础 Go语言介绍 Go语言命名 Go语言内置类型和函数 Go语言特殊函数介绍 Go语言运算符 第三章 Go语言程 ...
- 08. Go 语言包(package)
Go 语言包(package) Go 语言的源码复用建立在包(package)基础之上.Go 语言的入口 main() 函数所在的包(package)叫 main,main 包想要引用别的代码,必须同 ...
- GO:go语言介绍
什么是go语言 Google开源 编译型语言 21世纪的C语言 go开发团队: go的特点 语法简洁 开发效率高 执行性能好 发展现状 最近新兴的行业公司一般会使用go语言作为主要开发语言 容器虚拟化 ...
- (五)羽夏看C语言——结构体与类
写在前面 由于此系列是本人一个字一个字码出来的,包括示例和实验截图.本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正. 如有好的建议,欢迎反馈.码字不易,如果本篇 ...
- (一)羽夏看C语言——简述
"羽夏看C语言"介绍什么 本系列从汇编的角度,比较翔实的介绍C语言.C++和C其实是一样的东西,C++的编译器只是更强大,更能帮助我们写代码,例如模板.没有特殊说明,本系列不会 ...
- Owasp Top 10 Security Risks for 2014
A1-互联网泄密事件/撞库攻击 以大量的用户数据为基础,利用用户相同的注册习惯(相同的用户名和密码),尝试登陆其它的网站.2011年,互联网泄密事件引爆了整个信息安全 界,导致传统的用户+密码认证的方 ...
随机推荐
- MySQL 系列(二)Jdbc
MySQL 系列(二)Jdbc 一.Jdbc 基本操作 import java.sql.Connection; import java.sql.DriverManager; import java.s ...
- 20155311 2016-2017-2 《Java程序设计》第8周学习总结
20155311 2016-2017-2 <Java程序设计>第8周学习总结 教材学习内容总结 通用API: •日志API • 日志: 日志对信息安全意义重大,审计.取证.入侵检测等都会用 ...
- RedHat6使用centos6的yum源
更换源 cd /etc/yum.repos.d/ wget http://mirrors.163.com/.help/CentOS6-Base-163.repo vi CentOS6-Base-.re ...
- 看图说说JVM新生代垃圾收集器
- Scala程序编译运行
1.编译 Scala演示代码如下: <pre name="code" class="plain">/** * @author Administrat ...
- Android-ImageUtils工具类
图片相关的工具类 public class ImageUtils { public static boolean saveImage(Bitmap photo, String spath) { try ...
- webservice需要的包以及demo
包地址:http://pan.baidu.com/s/1qWyPgqo demo:http://pan.baidu.com/s/1dDvNJg9
- docker 版本变化及说明
Docker从1.13.x版本开始,版本分为企业版EE和社区版CE,版本号也改为按照时间线来发布,比如17.03就是2017年3月,有点类似于ubuntu的版本发布方式. 企业版自然会提供一些额外的服 ...
- MSP430G2553 Launchpad 硬件I2C驱动
一.USCI I2C 驱动介绍 对于MSP430G2553,硬件I2C由外设USCI(Universal Serial Communication Interface)提供.USCI又分为USCI_A ...
- 切图,css注意事项
1.文字尽量不要独立放在div中,一般放在p,span中(显得不专业) 2.div给了width就不要用padding-left,padding-right:给了height就不给padding-to ...