当前位置: 首页 > article >正文

【go】结构体切片去重

场景

自定义结构体切片,去除切片中的重复元素(所有值完全相同)

代码

// 定义的struct
type AssetAppIntranets struct {
	ID        string `json:"id,omitempty"`
	AppID     string `json:"app_id,omitempty"`
	IP        string `json:"ip,omitempty"`
	Port      int    `json:"port,omitempty"`
	Domain    string `json:"domain,omitempty"`
}

// 切片去重函数
func RemoveDuplicates(s []AssetAppIntranets) []AssetAppIntranets {
	m := make(map[AssetAppIntranets]bool)
	result := []AssetAppIntranets{}
	for _, v := range s {
		if _, ok := m[v]; !ok {
			m[v] = true
			result = append(result, v)
		}
	}
	return result
}

解读

使用映射m检查元素v是否存在。如果v不在映射中(即第一次出现),则返回的布尔值指示该键是否存在于映射中。如果布尔值为true,则表示该键不存在于映射中;如果为false,则表示该键已存在。
如果元素不在映射中,我们将它添加到映射中并添加到结果切片中。


http://www.kler.cn/a/228352.html

相关文章:

  • 微软Win10 RP 19045.5435(KB5050081)预览版发布!
  • 前端Vue2项目使用md编辑器
  • Flink Gauss CDC:深度剖析存量与增量同步的创新设计
  • blender 安装笔记 linux 2025
  • 【2024年华为OD机试】(C/D卷,200分)- 5G网络建设 (JavaScriptJava PythonC/C++)
  • linux-FTP服务配置与应用
  • 【Node系列】node中的流(Stream)
  • 16-Verilog实现二线制I2C CMOS串行EEPROM的读写操作
  • 【Java报错】显示错误“Error:java: 程序包org.springframework.boot不存在“
  • ArrayList和LinkedList的区别是什么
  • ASP.NET Core 预防开放式重定向攻击
  • JAVA斗地主逻辑-控制台版
  • 动态颗粒背景,适合VUE、HTML前端显示
  • kmp算法讲解
  • 华清远见嵌入式学习——春节作业——2.5日
  • [ubuntu]add-apt-repository 添加以及移除
  • 假期作业 2.2
  • 哪种安全数据交换系统,可以满足信创环境要求?
  • 视频业务像素、带宽、存储空间计算
  • OpenCV学习记录——平滑处理
  • 【ARM Trace32(劳特巴赫) 使用介绍 3.1 -- 不 attach core 直接访问 memory】
  • 【linux】校招中的“熟悉linux操作系统”一般是指达到什么程度?
  • ubuntu 安装 ffmpeg 6.0
  • 设计模式概述
  • 如何结合ChatGPT生成个人魔法咒语词库
  • 【UE 材质】球形遮罩材质