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. 2021最新版Dubbo-admin+Zookeeper安装教程

    安装程序包 这是写教程时收集好的文件,可直接点击下载,也可以跟着步骤自行下载:https://hanzhe.lanzous.com/ihna9jzcsze Zookeeper下载地址,任选其一点击下载 ...

  2. 【工具类】获取请求头中User-Agent工具类

    public class AgentUserKit { private static String pattern = "^Mozilla/\\d\\.\\d\\s+\\(+.+?\\)&q ...

  3. hdu1261 JAVA

    题意: 一个A和两个B一共可以组成三种字符串:"ABB","BAB","BBA".给定若干字母和它们相应的个数,计算一共可以组成多少个不同的 ...

  4. hdu4846 最大子正方形(dp)

    题意:       给你一个图,让你找到最大的子矩形. 思路:       之前做过一个最大子矩阵,记得当时是用三种方法做的,两种都是瓶颈法,第三种是dp,结果今天的用瓶颈吧怎么都过不去,哎!不知道为 ...

  5. 进程保护原理Hook函数Openprocess

    Win32子系统:                                                                                            ...

  6. OWASP-ZAP扫描器的使用

    目录 OWASP-ZAP 更新 代理 目录扫描 主动扫描(Active  Scan) 扫描结果 生成报告 OWASP-ZAP OWASP Zed攻击代理(ZAP)是世界上最受欢迎的免费安全审计工具之一 ...

  7. jpa模糊查询(表中的某些数据)

    业务代码 Controller @GetMapping({"/task/project"}) public ResponseEntity findByProjectTitle(@R ...

  8. UIautomator2框架快速入门App自动化测试

    01.APP测试框架比较 常见的APP测试框架   APP测试框架 02.UIAutomator2简介 简介 UIAutomator2是一个可以使用Python对Android设备进行UI自动化的库. ...

  9. ConcurrentHashMap源码解读三

    今天首先讲解helpTransfer方法 final Node<K,V>[] helpTransfer(Node<K,V>[] tab, Node<K,V> f) ...

  10. Java_封装

    分类(分层)思想 dao层(数据访问层):对数据进行管理的操作(增.删.改.查). 数据库.数组.集合 service层(业务层): 具体做一些业务操作 controller(控制层): 用来接收用户 ...