首页 > 其他分享 >go map

go map

时间:2023-03-31 23:11:27浏览次数:52  
标签:map users keys make 切片 go string

前言:

map类型是一个hash表,由键和值组成

正文:

map声明格式:

var mapname map[keytype] valuetype

mapname 为map的变量名

keytype 为键类型

valuetype 是键对应的值类型

未初始化的map的值是nil

map创建实例:

方式1:users := map[int]string{1: "lampol", 2: "liudehua"}

方式2:先声明,再赋值

var users map[int]string        //定义一个空的map

users = make(map[int]string, 4)  //为map分配空间

users[1] = "lampol1"            //为map赋值

users[2] = "lampol2"            //为map赋值

 

map的增删查改:

增加值:users[1] = "lampol1"

修改值 users[1] = "liming"

删除值  delete(users, 1)

查找值  name,exist :=users[1]  #exist 为true表示存在,为false表示不存在

 

map遍历:

由于map里面的键是没有顺序的,所以输出是无序的

map无序的输出

for k, v := range users {

fmt.Println(k, v) //遍历出来是没有顺序的

}

map顺序输出:由于map是无序的,所以需要对键先排序,然后按键的顺序输出值

keys := make([]int, 0, len(users))  //生成一个int类型的切片

for k, _ := range users {

keys = append(keys, k)

}

sort.Ints(keys)   //正序排序

fmt.Println(keys) //输出 [1 2 3 4 5]

 

for _, key := range keys {

fmt.Println(key, users[key])  //顺序排列

}

map类型切片:

示例1:生成map类型的切片

users := make([]map[string]string, 2) //生成一个map的切片

users[0] = make(map[string]string, 3) //初始化切片

users[0]["name"] = "lampol"

users[0]["age"] = "20"

users[0]["email"] = "[email protected]"

users[1] = make(map[string]string, 3) //初始化切片

users[1]["name"] = "liudehua"

users[1]["age"] = "48"

users[1]["email"] = "[email protected]"

 

示例2:值为切片类型的map

省市级联map

citys := make(map[string][]string, 2) //声明map 值为切片

sCitys := make([]string, 0, 3)  //定义空切片  长度为0 容量是3

sCitys = append(sCitys, "青岛", "济南", "烟台") //切片赋值

citys["山东"] = sCitys

 

jCitys := make([]string, 0, 3)  //定义空切片  长度为0 容量是3

jCitys = append(jCitys, "南京", "苏州", "常州") //切片赋值

citys["江苏"] = jCitys

 

fmt.Println(citys) //输出 map[山东:[青岛 济南 烟台] 江苏:[南京 苏州 常州]]

//循环遍历

for k, v := range citys {

for _, v2 := range v {

fmt.Println(k, v2)

}

}

 

完结

 

标签:map,users,keys,make,切片,go,string
From: https://www.cnblogs.com/ypeih/p/17277782.html

相关文章

  • Go 连接数据库的增删改查
    packagemainimport("database/sql""fmt"_"github.com/go-sql-driver/mysql")vardb*sql.DBfuncinitDB()(errerror){dsn:="root:123456@tcp(127.0.0.1)/ssmd"db,err=sql.Open("mys......
  • mongodb--文档查询
    一、简单查询--查询所有文档db.COLLECTION_NAME.find()--将查询结果以json形式显示db.COLLECTION_NAME.find().pretty()二、按条件查询文档db.COLLECTION_NAME.find(query,projection)参数说明:query:可选,projection:可选,查询时返回文档中所有键值,(默认省略)说明:按条件......
  • flatMap
    概述flatMap() 是Stream类中的方法,用于在Java中扁平化流。Stream流能够保存不同类型的数据。Stream<T> –每个元素都是一个对象的流。IntStream, DoubleStream,或者 LongStream –每个元素都是原始数据类型的流。Stream<int[]> –每个元素都是原始数组的流。Stre......
  • mongodb-文档的插入、更新与删除操作
    一、文档的插入--单文档插入db.COLLECTION_NAME.insert(document)db.COLLECTION_NAME.insertOne(document)--insert也可以插入多文档db.COLLECTION_NAME.save(document)--insert与save区别--insert方法插入若文档中已存在该文档,会报错,反之写入--save方法插入若集合中已......
  • mongodb--数据库操作与集合操作
    一、数据库操作1、新建数据库和切换数据库useDATABASE_NAME--DATABASE_NAME创建数据库的名字--如果刚创建完数据库,使用查看命令后没有的话,其实因为里面没有数据,所以才看不到2、查看所有数据库--查看所有数据库showdbs--查看当前数据库db 3、删除数据库--删除......
  • (转)Golang 编程思维和工程实战
    原文:https://zhuanlan.zhihu.com/p/426368274一Golang编程思维首先,我们先来看下最基本的,就是Golang的学习技巧,比如:通读Golang的一些好的文章如 FrequentlyAskedQuestions(FAQ)或者看看 FAQ的中文翻译 ,主要是了解Golang的全貌。Go精华文章列表Go相关博客......
  • 开心档之Go 错误处理
    Go错误处理Go语言通过内置的错误接口提供了非常简单的错误处理机制。error类型是一个接口类型,这是它的定义:typeerrorinterface{Error()string}我们可以在编码中通过实现error接口类型来生成错误信息。函数通常在最后的返回值中返回错误信息。使用errors.New......
  • (转) beego中URL反转使用
    原文:https://www.cnblogs.com/hei-ma/articles/13626245.html什么是URL反转:根据“URL路径对应的处理函数“来获取到对应”URL方法“就是URL反转。 URL反转的好处:url改变不需要跟着改代码。 URL反转使用示例1、本示例的路由规则如下beego.Router("/login",......
  • 测试平台RunnerGo,每位测试人员都该掌握的
    在软件开发中,软件质量保障是非常重要的环节,测试工作对于保证软件质量和用户体验至关重要。然而,测试流程繁琐,需要大量的人力和时间投入,往往会成为软件开发的瓶颈。一款好的测试平台可以大幅简化测试流程提高测试效率,其中,RunnerGo测试平台就是一种非常不错的选择。什么是RunnerGo?......
  • 通过MapEdit源程序的学习MAP文件 3, 改编程序,没有编辑功能,只显示MAP
    unitshowmap;interfaceusesWindows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,Dialogs,ExtCtrls,StdCtrls,WIL,ComCtrls;constUNITX=48;UNITY=32;typeTMapInfo=packedrecord//这个好像不需要PACKED......