广告
返回顶部
首页 > 资讯 > 精选 >使用go语言怎么查找两个数组的异同
  • 637
分享到

使用go语言怎么查找两个数组的异同

2023-06-15 07:06:18 637人浏览 独家记忆
摘要

这篇文章给大家介绍使用Go语言怎么查找两个数组的异同,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。输入是两个数组,一个旧数组一个新数组,要求获取新数组相对旧数组所有新增和删除的元素,例如:输入:arr_old:&nbs

这篇文章给大家介绍使用Go语言怎么查找两个数组的异同,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

输入是两个数组,一个旧数组一个新数组,要求获取新数组相对旧数组所有新增和删除的元素,例如:

输入:arr_old: {"1", "2", "4", "5", "7", "9"}arr_new: {"2", "3", "4", "6", "7"}返回:arr_added: {"3", "6"}arr_deleted: {"1", "5", "9"}

go的标准库中没有类似的直接比较的方法,需要自己具体实现,最简单的方法当然是旧数组的每个元素去新数组,找不到的就是删除的,然后新数组的元素再挨个去旧数组找一遍,找不到就是新增的,但这个方法效率实在太低了。

上代码,这里有个技巧,就是利用go中map键唯一性的特性,用数组的元素作为map的key,通过map来实现快速查找。

package mainimport ("fmt")func main() {//fmt.Println("Hello World!")src := []string{"1", "2", "4", "5", "7", "9"}dest := []string{"2", "3", "4", "6", "7"}added, removed := Arrcmp(src, dest)fmt.Printf("add: %v\nrem: %v\n", added, removed)}func Arrcmp(src []string, dest []string) ([]string, []string) {msrc := make(map[string]byte) //按源数组建索引mall := make(map[string]byte) //源+目所有元素建索引var set []string //交集//1.源数组建立mapfor _, v := range src {msrc[v] = 0mall[v] = 0}//2.目数组中,存不进去,即重复元素,所有存不进去的集合就是并集for _, v := range dest {l := len(mall)mall[v] = 1if l != len(mall) { //长度变化,即可以存l = len(mall)} else { //存不了,进并集set = append(set, v)}}//3.遍历交集,在并集中找,找到就从并集中删,删完后就是补集(即并-交=所有变化的元素)for _, v := range set {delete(mall, v)}//4.此时,mall是补集,所有元素去源中找,找到就是删除的,找不到的必定能在目数组中找到,即新加的var added, deleted []stringfor v, _ := range mall {_, exist := msrc[v]if exist {deleted = append(deleted, v)} else {added = append(added, v)}}return added, deleted}

运行结果:

add: [6 3]rem: [1 5 9]

欢迎大家交流效率更高的方法。

以上就是详解用go语言实现查找两个数组的异同的详细内容,更多请关注编程网其它相关文章!

关于使用go语言怎么查找两个数组的异同就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: 使用go语言怎么查找两个数组的异同

本文链接: https://www.lsjlt.com/news/278919.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 使用go语言怎么查找两个数组的异同
    这篇文章给大家介绍使用go语言怎么查找两个数组的异同,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。输入是两个数组,一个旧数组一个新数组,要求获取新数组相对旧数组所有新增和删除的元素,例如:输入:arr_old:&nbs...
    99+
    2023-06-15
  • Go语言的数组怎么用
    本篇内容介绍了“Go语言的数组怎么用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!数组变量的定义我们先试一下只申明类型,不赋初值。这时编译器...
    99+
    2023-06-02
  • 怎么用go语言比较两个对象是否深度相同
    这篇文章主要介绍“怎么用go语言比较两个对象是否深度相同”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么用go语言比较两个对象是否深度相同”文章能帮助大家解决问题。前言:func Dee...
    99+
    2023-06-30
  • Django和Go教程:如何在两种不同的编程语言中使用数组
    数组是程序员在日常编程中使用最频繁的数据结构之一。它可以被用于存储大量的数据,并且可以被用于搜索、排序和过滤这些数据。在这篇文章中,我们将会探讨如何在Django和Go这两种不同的编程语言中使用数组。 Django是一个基于Python的...
    99+
    2023-11-04
    教程 数组 django
  • 怎么在c语言中使用二分法查找数组中的元素
    今天就跟大家聊聊有关怎么在c语言中使用二分法查找数组中的元素,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。c语言二分法实现查找数组元素的方法:递归算法#include<stdi...
    99+
    2023-06-14
  • 使用go语言怎么实现数组比较
    这篇文章给大家介绍使用go语言怎么实现数组比较,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。比较两个数组是否相等如果两个数组类型相同(包括数组的长度,数组中元素的类型)的情况下,我们可以直接通过较运算符(==和!=)来...
    99+
    2023-06-15
  • C语言怎么连接两个数组的内容你知道吗
    目录要求:源代码如下:运行效果图如下:总结要求: 定义两个数组,并用指针将两个数组的内容连接到一起 源代码如下: #include<stdio.h> void main(...
    99+
    2022-11-12
  • 如何使用Go语言的数据类型来实现数组同步?
    Go语言是一门由Google开发的编程语言,它具有简单、快速、安全等特点。在Go语言中,数组是一种非常重要的数据类型,它可以用来存储一组相同数据类型的元素。但是,在多线程的情况下,如果多个线程同时对同一个数组进行操作,就可能会出现数据不一...
    99+
    2023-10-11
    数据类型 同步 数组
  • Go语言中数组,切片和映射怎么使用
    这篇文章主要讲解了“Go语言中数组,切片和映射怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Go语言中数组,切片和映射怎么使用”吧!Arrays (数组), Slices (切片) ...
    99+
    2023-07-02
  • 使用PHP怎么在两个文件中找出相同的记录
    使用PHP怎么在两个文件中找出相同的记录?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。引言给定a,b两个文件, 分别有x,y行数据, 其中(x, y均大于10亿...
    99+
    2023-06-15
  • 怎么利用go语言实现查找二叉树中的最大宽度
    这篇文章主要介绍“怎么利用go语言实现查找二叉树中的最大宽度”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么利用go语言实现查找二叉树中的最大宽度”文章能帮助大家解决问题。介绍这道题是这样的,有一...
    99+
    2023-06-30
  • 数组在Go语言异步编程中的使用技巧有哪些?
    在Go语言中,数组是一种非常重要的数据结构,它可以存储一系列的元素,并且这些元素可以是任何类型。在异步编程中,数组的使用也是非常频繁的,因为它可以方便地存储异步处理结果,并且可以方便地对这些结果进行处理和分析。本文将介绍一些数组在Go语言异...
    99+
    2023-08-08
    异步编程 数据类型 数组
  • go语言中的输入函数怎么使用
    这篇“go语言中的输入函数怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“go语言中的输入函数怎么使用”文章吧。go语...
    99+
    2023-07-04
  • C语言不使用临时变量怎么交换两个整数的值
    本文小编为大家详细介绍“C语言不使用临时变量怎么交换两个整数的值”,内容详细,步骤清晰,细节处理妥当,希望这篇“C语言不使用临时变量怎么交换两个整数的值”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。不使用临时变量...
    99+
    2023-06-17
  • 异步编程中如何高效地使用Go语言的数组数据类型?
    在异步编程中,Go语言的数组数据类型是非常重要的。它们可以用来存储和处理大量的数据,而且非常高效。在本文中,我们将介绍如何高效地使用Go语言的数组数据类型。 一、Go语言数组概述 Go语言的数组是一种固定大小的数据结构,它可以存储一系列相...
    99+
    2023-08-08
    异步编程 数据类型 数组
  • GO语言异步编程中使用数组负载的技巧和窍门是什么?
    GO语言作为一种高效、快速的编程语言,异步编程是其非常重要的特性之一。在异步编程中,使用数组负载是非常常见的技巧。本文将介绍GO语言异步编程中使用数组负载的技巧和窍门。 一、什么是数组负载? 在GO语言中,数组负载是指将数组中的数据放入到一...
    99+
    2023-07-24
    load 数组 异步编程
  • Go语言中数组的异步编程:使用关键字来优化性能。
    Go语言中数组的异步编程:使用关键字来优化性能 在Go语言中,数组是一种非常常见的数据结构。它可以存储一组相同类型的数据,并且可以通过下标来访问其中的元素。在某些情况下,我们需要对数组进行一些复杂的操作,例如排序、查找、过滤等等。这些操作可...
    99+
    2023-10-02
    数组 异步编程 关键字
  • Go语言中的函数与方法怎么使用
    这篇文章主要介绍了Go语言中的函数与方法怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Go语言中的函数与方法怎么使用文章都会有所收获,下面我们一起来看看吧。函数定义语法与大部分语言一致,Go语言中的函数...
    99+
    2023-07-02
  • 了解Go语言中的关键字:如何使用数组进行异步编程?
    Go语言是一种快速、高效的开发语言,因为其简洁明了的语法和卓越的并发性能而备受欢迎。在这篇文章中,我们将深入探讨Go语言中的关键字,以及如何使用数组进行异步编程。 Go语言关键字 在Go语言中,关键字是指被语言保留的特定单词,这些单词具有特...
    99+
    2023-10-02
    数组 异步编程 关键字
  • C语言中的柔性数组怎么使用
    这篇文章主要讲解了“C语言中的柔性数组怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言中的柔性数组怎么使用”吧!1.什么是柔性数组柔性数组就是大小可以变化的数组。注意跟C99中的...
    99+
    2023-07-06
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作