package main

import "fmt"

/*
映射(map)是键值对(key-value)数据的集合
根据键key可以快速检索值value
键值的类型可以是任意的,key使用string的时候最多
*/ //创建和访问键值
func main051() {
//定义string为键int为值的映射,用于存储分数
//var scoreMap map[string]int = map[string]int{}
//var scoreMap = map[string]int{}
//scoreMap := map[string]int{} ////没有指定长度,长度为0
scoreMap := make(map[string]int)
////scoreMap := make(map[string]int,2) //添加键值对数据
scoreMap["张全蛋"] = 59
scoreMap["穆铁柱"] = 63
scoreMap["张半蛋"] = 99 //长度取决于键值对的个数
fmt.Println("映射的长度是", len(scoreMap))//3
fmt.Println(scoreMap)// //根据键访问值
fmt.Println("张半蛋的成绩是", scoreMap["张半蛋"])//99
fmt.Println("张全蛋的成绩是", scoreMap["张全蛋"])//59
var name = "穆铁柱"
fmt.Println("穆铁柱的成绩是", scoreMap[name])//63
scoreMap["穆铁柱"] = 7
fmt.Println("穆铁柱的成绩是", scoreMap["穆铁柱"])//7 //访问并不存在的键
score := scoreMap["西门志"]
fmt.Println("西门志的成绩是", score)//0 } //带校验的访问
func main052() {
scoreMap := make(map[string]int)
scoreMap["张全蛋"] = 59
scoreMap["穆铁柱"] = 63
scoreMap["张半蛋"] = 99 //带校验地访问键值
score, ok := scoreMap["穆铁柱"]
fmt.Println(score, ok) //63,true true代表有穆铁柱这个键 score, ok = scoreMap["西门志"]
fmt.Println(score, ok) //0,false false代表查询的键西门庄并不存在
/*
if ok == true 还可以写作 if ok
if ok == false 还可以写作 if !ok
*/
//if ok == true {
// fmt.Println("西门志的成绩是", score)
//} else {
// fmt.Println("查你妹,没有这个卵人")
//} if score,ok := scoreMap["你妹"];ok {
fmt.Println("你妹的成绩是", score)
}else{
fmt.Println("没有你妹这个卵人")
}
} /*复习数组和切片的遍历*/
func main053() {
//arr := [...]int{3, 1, 4, 1, 5}
slice := make([]int,5)
slice = append(slice, 1, 2, 3, 4, 5) //同时遍历下标和对应的值
//for i,x := range slice{
// fmt.Println(i,x)
//} //只遍历下标
for i := range slice{
fmt.Println(i)
}
} /*map初始化时必须赋初始值,否则为nil-map(是不能添加键值对的)*/
func main054() {
//var tempMap map[string]float64//nil map 空映射,不能向其中添加键值
var tempMap map[string]float64 = map[string]float64{}//没有内容的map
fmt.Println("tempMap=",tempMap) tempMap["你妹"]=666
fmt.Println("tempMap=",tempMap)
} //遍历
func main055() {
scoreMap := make(map[string]int)
scoreMap["张全蛋"] = 59
scoreMap["穆铁柱"] = 63
scoreMap["张半蛋"] = 99 ////遍历key和value
//for key, value := range scoreMap {
// //fmt.Printf("scoreMap[%s]=%d\n", key, value)
// fmt.Println(key,value)
//} //遍历key
for key := range scoreMap {
fmt.Println(key,scoreMap[key])
}
}

  

GO语言复合类型04---映射的更多相关文章

  1. GO语言复合类型03---切片

    切片相当于长度可以动态扩张的数组 array[start:end]从数组身上截取下标为[start,end)片段,形成切片start代表开始下标,不写默认代表从头开始切end代表结束下标(本身不被包含 ...

  2. GO语言复合类型02---数组

    package main import "fmt" /* 固定长度.固定类型的数据容器 */ /*数组的声明*/ func main031() { //var array [5]i ...

  3. GO语言复合类型01---指针

    package main /* %T 类型占位符 %v 值占位符 %p 地址(指针)占位符,只有地址才能替换%p &value 对值取地址 *addr 对地址取值 **int 指向int型指针 ...

  4. GO语言复合类型05---递归

    package main import ( "fmt" "time" ) /* ·递归就是自己调自己 ·递归一定要有终止条件(否则就是无限死循环) */ /*使 ...

  5. 带你学够浪:Go语言基础系列 - 8分钟学复合类型

    ★ 文章每周持续更新,原创不易,「三连」让更多人看到是对我最大的肯定.可以微信搜索公众号「 后端技术学堂 」第一时间阅读(一般比博客早更新一到两篇) " 对于一般的语言使用者来说 ,20% ...

  6. go语言 类型:基础类型和复合类型

    Go 语言中包括以下内置基础类型:布尔型:bool整型:int int64 int32 int16 int8 uint8(byte) uint16 uint32 uint64 uint浮点型:floa ...

  7. Python基础:04映射类型

    字典是Python语言中唯一的映射类型.一个字典对象是可变的,它是一个容器类型,能存储任意个数的Python对象.字典中的数据是无序排列的. 映射类型也可被称做哈希表,哈希表的算法是获取键,对键执行一 ...

  8. C语言中的复合类型

    复合类型 一.掌握的类型 1. 指针数组 int * arr[10]; //arr是一个数组,有10个元素,每个元素都是一个指针,即arr是一个指针数组 int a,b,c,d; arr[0] = & ...

  9. 可遇不可求的Question之MySqlClient的Guid 类型的映射篇

    关于 Guid 类型的映射 MySql 没有原生的 Guid 类型,一般使用 binary(16) 或者 char(36) 这两个类型.早期版本的 Connector/Net 将 binary(16) ...

随机推荐

  1. zipfile tarfile模块

    zipfile --- 使用ZIP存档 这个模块提供了创建.读取.写入.添加及列出 ZIP 文件的工具 # 创建一个ZipFile对象, 可使用上下文管理 with class zipfile.Zip ...

  2. JS 中一些高效的魔法运算符

    这两天有同事说我挺久没更新文章了,不过最近一段时间确实有点忙,一直在忙着两个活动中心的改版,没什么时间来更新文章.今天终于抽空可以写一写. JavaScript 现在每年都会发一个新版本,里面也会新增 ...

  3. 反调试——Windows异常-SEH

    反调试--Windows异常-SEH 概念: SEH:Structured Exception Handling SEH是Windows默认的异常处理机制 如何使用 在代码中使用 __try​​__e ...

  4. 【VritualEnv】虚拟环境的介绍和基本使用

    一.virtualenv的介绍: 在python开发中,我们可能会遇到一种情况,就是当前的项目依赖的是某一个版本,但是另一个项目依赖的是另一个版本,这样就会造成依赖冲突,而virtualenv就是解决 ...

  5. 【Git】5. 远程库(GitHub)相关操作

    之前也提到了,在整个协作的过程中,必不可少的就是远程库了.Github作为一个全球最大的同性交友网站,同样也是一个非常强大的远程库. 现在希望将本地的hello.txt文件也推到github上去,那首 ...

  6. 初识Vue2(一):表单输入绑定(附Demo)

    在线演示 http://demo.xiongze.net/ 下载地址 https://gitee.com/xiongze/Vue2.git js引用 <!--这里可以自己下载下来引用,也可以使用 ...

  7. java集合-哈希表HashTable

    一.简介 HashTable也是一种key-value结构,key-value不允许null,并且这个类的几乎全部的方法都加上了synchronized锁,来保证并发安全,由于加了锁所以性能方面会比较 ...

  8. ES6新增数组的一些思考和使用

    ES6数组的新增 伪数组转换为数组的两种方法 Array.from()把一个伪数组转换为一个真正的数组 伪数组:有下标和length,但是不能使用数组方法 let lis = document.que ...

  9. [bug] SSM项目:Cannot load driver class: com.mysql.jdbc.Driver

    检查pom文件,mysql包部分为: <dependency> <groupId>mysql</groupId> <artifactId>mysql-c ...

  10. [BD] Hive

    简介 基于HDFS的数据仓库工具 基于HDFS上的数据分析引擎 2.x 前:SQL -----> Hive  ----> MapReduce 2.x 后:推荐执行引擎为 Spark 支持S ...