ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

golang中的map

2020-02-22 13:07:04  阅读:310  来源: 互联网

标签:map fmt golang map1 key Println monsters


二话不说,撸码吧

package main

import (
	"fmt"
)

/**
 *  @Description:golang中的map
 *  @Author: guai
 *  @Date:2020/2/22 11:28
**/
func main() {
	//1、map
	//map是key-value数据结构,又称为字段或者关联数组,类似其他语言中的集合

	//1.1、map的声明
	//var map变量名 map[keyType] valueType
	//注意map在声明时不会分配内存,需要使用make初始化

	//声明一个map
	var map1 map[string]int
	//初始化map
	map1 = make(map[string]int, 10)
	map1["guai"] = 18
	map1["shuai"] = 16
	//打印map的内容
	fmt.Println("map1中的内容:", map1, "map长度为:", len(map1))

	//遍历map1中的值
	for key, value := range map1 {
		fmt.Println("key:", key, " value:", value)
		fmt.Println("key:", key, " value:", value)
	}

	//1.2、对map内容的增删改查

	//增与改
	//当map中没有该key值时增加
	map1["cabbage"] = 120
	fmt.Println("map1中的内容:", map1)
	//当map中有该key值时修改value
	map1["cabbage"] = 18
	fmt.Println("修改key=“cabbage”中的内容:", map1)

	//根据key值查找value
	fmt.Println("key=shuai val=", map1["guai"])
	//使用内置函数delete() 根据key值删除
	delete(map1, "cabbage")
	fmt.Println("删除map1中key=“cabbage”的内容:", map1)

	//2、map切片
	//类型为map的切片为称为map切片,这样map个数就可以动态变化了
	//2.1、声明一个map切片
	var monsters []map[string]int
	monsters = make([]map[string]int, 2)

	if monsters[0] == nil {
		monsters[0] = make(map[string]int, 2)
		monsters[0]["萝卜"] = 18
		monsters[0]["白菜"] = 16
	}
	if monsters[1] == nil {
		monsters[1] = make(map[string]int, 2)
		monsters[1]["西红柿"] = 18
		monsters[1]["茄子"] = 16
	}
	//使用append追加一个key-value
	monsters = append(monsters, map[string]int{"冬瓜": 12})
	fmt.Println(monsters)

	//3、map排序
	//拱廊中没有正对map的key进行排序的方法
	//golang中的map默认使无序的,注意也不是按照添加的顺序村方法,每次遍历的结果可能不一样

	//4、map使用细节
	//4.1、map是引用类型
	//4.2、map可以自动扩容
	//4.3、map的value的类型也可以是struct类型

	//4.2、map自动扩容测试
	//定义map
	var mapExpansion map[int]int
	//初始化一个长度为1
	mapExpansion = make(map[int]int, 1)
	//实际赋了两个值
	mapExpansion[1] = 1
	mapExpansion[2] = 2
	fmt.Println("map扩容:", mapExpansion)

	//4.3、value类型为结构体
	students := make(map[string]Stu, 3)
	students["1001"] = Stu{"guai", 16}
	students["1002"] = Stu{"shuai", 18}

	for key, stu := range students {
		fmt.Println("学号:", key)
		fmt.Println("姓名:", stu.name)
		fmt.Println("年龄:", stu.age)
	}

}

//定义一个结构体(和c可太像了)
type Stu struct {
	name string
	age  int
}
任性的萝卜 发布了38 篇原创文章 · 获赞 0 · 访问量 931 私信 关注

标签:map,fmt,golang,map1,key,Println,monsters
来源: https://blog.csdn.net/weixin_44373940/article/details/104441769

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有