go 计算map 差集、并集、交集

这篇具有很好参考价值的文章主要介绍了go 计算map 差集、并集、交集。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

原文链接:> https://www.zhoubotong.site/post/95.html

某些业务场景可能需要实现两个或者多个map 的交差并集,一下举个简单的demo, 思路其实并不复杂:

package main

import "fmt"

// 并集
func union(m1, m2 map[string]int) map[string]int {
    result := make(map[string]int) // 思路:先把其中一个map 放到新的对象中,把m2中key不存在于本对象中合并即可
    for k, v := range m1 {
        result[k] = v
    }
    for k, v := range m2 {
        if _, ok := result[k]; !ok {
            result[k] = v
        }
    }
    return result
}

// 交集 两个map中都存在
func intersection(m1, m2 map[string]int) map[string]int {
    result := make(map[string]int) // 思路:优先遍历m1,判断m2中是否存在相同key,存在则存入新对象
    for k, v := range m1 {
        if _, ok := m2[k]; ok {
            result[k] = v
        }
    }
    return result
}

// 差集 包括第一个map中存在的键值对,但是不包括第二个map中的键值对
func difference(m1, m2 map[string]int) map[string]int {
    result := make(map[string]int) // 思路:遍历m1, 判断m2中不存在相同key的则存入新对象,即为差集
    for k, v := range m1 {
        if _, ok := m2[k]; !ok {
            result[k] = v
        }
    }
    return result
}
func main() {
    m1 := make(map[string]int)
    m1["a"] = 11
    m1["b"] = 12
    m1["c"] = 13
    m2 := make(map[string]int)
    m2["a"] = 11
    m2["c"] = 13
    fmt.Println("并集:", union(m1, m2))
    fmt.Println("交集:", intersection(m1, m2))
    fmt.Println("差集:", difference(m1, m2))
}

输出:

[Running] go run "/media/uos/G/web/demo/main.go"
并集: map[a:11 b:12 c:13]
交集: map[a:11 c:13]
差集: map[b:12]

代码中有简单说明,不难看出实现过程其实比较简单。文章来源地址https://www.toymoban.com/news/detail-422342.html

到了这里,关于go 计算map 差集、并集、交集的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包