Golang将Map的键值对调的实现示例

 更新时间:2022年02月22日 09:55:28   作者:头秃猫轻王  
本文主要介绍了Golang将Map的键值对调的实现示例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

一、Map是什么?

map是一堆键值对的未排序集合,类似Python中字典的概念,它的格式为map[keyType]valueType,是一个key-value的hash结构。map的读取和设置也类似slice一样,通过key来操作,只是slice的index只能是int类型,而map多了很多类型,可以是int,可以是string及所有完全定义了==与!=操作的类型

二、详细代码

1.对调键值

Map原数据:

moMap := map[string]int{
        "张三": 21, "李四": 56, "王五": 23,
        "赵六": 45, "周七": 32, "陈八": 21,
        "许九": 21, "王十": 16, "吴三": 45,
        "郑六": 23, "许七": 43, "李三": 16,
    }

具体代码如下(示例):

// 键值对调 
// 传入参数:moMap map[string]int
// 返回值: map[int][]string
func reserveMap(moMap map[string]int) map[int][]string {
    // 建立一个 resMap 与 moMap 容量相同
    // 由于对调可能存在多个值对应一个Key
    // string 需转为 切片[]string
    resMap := make(map[int][]string, len(moMap))

    // 通过for range 遍历 moMap
    // k 即为 Key v 即为 Value
    for k, v := range moMap {
        // 由于现在对应为 切片[]string
        // 使用 append 达到添加多个的效果
        resMap[v] = append(resMap[v], k)
    }
    
    // 程序结束
    return resMap
}

2.进行调用

详细代码如下(示例):

package main

import (
    "fmt"
)


func main() {
    moMap := map[string]int{
        "张三": 21, "李四": 56, "王五": 23,
        "赵六": 45, "周七": 32, "陈八": 21,
        "许九": 21, "王十": 16, "吴三": 45,
        "郑六": 23, "许七": 43, "李三": 16,
    }

    // 打印对调前
    for k, v := range moMap {
        fmt.Printf("Key: %v, Value: %v \n", k, v)
    }

    resMap := reserveMap(moMap)

    fmt.Println("reserve:")
    // 打印对调后
    for k, v := range resMap {
        fmt.Printf("Key: %v, Value: %v \n", k, v)
    }
}

// 键值对调
// 传入参数:moMap map[string]int
// 返回值: map[int][]string
func reserveMap(moMap map[string]int) map[int][]string {
    // 建立一个 resMap 与 moMap 容量相同
    // 由于对调可能存在多个值对应一个Key
    // string 需转为 切片[]string
    resMap := make(map[int][]string, len(moMap))

    // 通过for range 遍历 moMap
    // k 即为 Key v 即为 Value
    for k, v := range moMap {
        // 由于现在对应为 切片[]string
        // 使用 append 达到添加多个的效果
        resMap[v] = append(resMap[v], k)
    }

    // 程序结束
    return resMap
}

总结

键值的简单调换是熟悉Golang Map 数据类型的前奏。

PS:golang 无序的键值对集合map

package main

import "fmt"

func main() {
     /*创建集合并初始化 */
    countryCapitalMap := make(map[string]string)

    /* map插入key - value对,各个国家对应的首都 */
    countryCapitalMap [ "France" ] = "巴黎"
    countryCapitalMap [ "Italy" ] = "罗马"
    countryCapitalMap [ "Japan" ] = "东京"
    countryCapitalMap [ "India " ] = "新德里"

    /*使用键输出value值 */
    for country := range countryCapitalMap {
        fmt.Println(country, "首都是", countryCapitalMap [country])
    }

    /*查看元素在集合中是否存在 */
    capital, ok := countryCapitalMap [ "American" ] /*如果确定是真实的,则存在,否则不存在 */
    /*fmt.Println(capital) */
    /*fmt.Println(ok) */
    if (ok) {
        fmt.Println("American 的首都是", capital)
    } else {
        fmt.Println("American 的首都不存在")
    }
}

到此这篇关于Golang将Map的键值对调的实现示例的文章就介绍到这了,更多相关Golang Map键值对调 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Go语言基础设计模式之策略模式示例详解

    Go语言基础设计模式之策略模式示例详解

    这篇文章主要为大家介绍了Go语言基础设计模式之策略模式示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2021-11-11
  • 深入理解Go语言中接口的使用

    深入理解Go语言中接口的使用

    在现代编程语言中,接口是不可或缺的一个重要特性,这篇文章将为大家详细介绍Go语言中的接口,从而能够更好得使用Go语言,需要的可以参考一下
    2023-06-06
  • GoLand如何设置中文

    GoLand如何设置中文

    这篇文章主要介绍了GoLand如何设置中文,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • Go 结构体、数组、字典和 json 字符串的相互转换方法

    Go 结构体、数组、字典和 json 字符串的相互转换方法

    今天小编就为大家分享一篇Go 结构体、数组、字典和 json 字符串的相互转换方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • GO语言导入自己写的包(同级目录和不同目录)

    GO语言导入自己写的包(同级目录和不同目录)

    本文介绍了如何在Go语言项目中导入同级目录和不同目录的包,详细解释了创建文件结构、编写主函数、同级目录和不同目录方法的调用,适合初学者参考,帮助理解Go项目的基本构建和包管理
    2024-09-09
  • 使用Go语言编写一个极简版的容器Container

    使用Go语言编写一个极简版的容器Container

    Docker作为一种流行的容器化技术,对于每一个程序开发者而言都具有重要性和必要性,因为容器化相关技术的普及大大简化了开发环境配置、更好的隔离性和更高的安全性,对于部署项目和团队协作而言也更加方便,本文将尝试使用Go语言编写一个极简版的容器
    2023-10-10
  • GO接收GET/POST参数及发送GET/POST请求的实例详解

    GO接收GET/POST参数及发送GET/POST请求的实例详解

    这篇文章主要介绍了GO接收GET/POST参数及发送GET/POST请求,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • go语法入门匿名函数定义及使用示例详解

    go语法入门匿名函数定义及使用示例详解

    这篇文章主要为大家介绍了go语法入门匿名函数定义及使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • Golang 数据库操作(sqlx)和不定字段结果查询

    Golang 数据库操作(sqlx)和不定字段结果查询

    本文主要介绍了Golang 数据库操作(sqlx)和不定字段结果查询,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • Go并发编程sync.Cond的具体使用

    Go并发编程sync.Cond的具体使用

    Go 标准库提供 Cond 原语的目的是,为等待 / 通知场景下的并发问题提供支持,本文主要介绍了Go并发编程sync.Cond的具体使用,具有一定的参考价值,感兴趣的可以了解一下
    2022-05-05

最新评论