zoukankan      html  css  js  c++  java
  • GO语言复合类型04---映射

    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
    ", key, value)
    	//	fmt.Println(key,value)
    	//}
    
    	//遍历key
    	for key := range scoreMap {
    		fmt.Println(key,scoreMap[key])
    	}
    }
    

      

  • 相关阅读:
    ireport制作小技巧
    Spring 自动装配 Bean
    Toad创建DBLINKsop
    Spring 读书笔记-----使用Spring容器(一)
    Spring读书笔记-----Spring的Bean之Bean的基本概念
    关于iOS开发中info.plist文件的解读
    iOS常用的第三方库GitHub地址
    NSUserDefault的使用
    论坛收集
    iOS开发的一些奇巧淫技
  • 原文地址:https://www.cnblogs.com/yunweiqiang/p/11823778.html
Copyright © 2011-2022 走看看