登录
首页 >  Golang >  Go问答

去除响应中的冗余内容

来源:stackoverflow

时间:2024-02-07 10:54:23 209浏览 收藏

积累知识,胜过积蓄金银!毕竟在Golang开发的过程中,会遇到各种各样的问题,往往都是一些细节知识点还没有掌握好而导致的,因此基础知识点的积累是很重要的。下面本文《去除响应中的冗余内容》,就带大家讲解一下知识点,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~

问题内容

我有以下任务:我正在制作一个循环,向服务器发出请求并接收一个值,例如它是一个整数切片。然后我需要将这部分整数传递给另一个任务。问题是有时我从服务器收到重复的值,例如:

resp1 := []int{1,2,3,4} > do some things
resp2 := []int{3,4,5,6} > do some things

但我只想将响应中的新值传递给下一个任务

resp1 := []int{1,2,3,4} > pass 1,2,3,4
resp2 := []int{3,4,5,6} > pass 5,6

是否有任何解决方案可以避免/“清除”值中的重复项?


正确答案


总体思路是维护一个全局切片映射(如 the comments 中的 mkopriva 所建议),它将记住您传递给其他任务的任何值。

还构建一个新切片,它将:

  • 测试全局映射中的每个值“x”(respx):
    • 如果存在,您的新切片将包含该值
    • 如果不存在,您的新切片将包含该值(并且一个空的结构值将添加到您的全局映射中,以“x”作为键)
  • 将新切片(仅包含新值,之前从未传递过)传递给新任务

要点是:您当前的任务是有状态的,需要在每次调用之间维护状态。

您将需要某种 global variable 和/或 singleton,它将跨越程序执行的生命周期。
mkopriva 还提到“visited pattern”作为实现示例。

以上就是《去除响应中的冗余内容》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>