从一个golang 员工emp数组中,找到其中name相同的元素,把结果放到一个新数组里,代码实现
内容来自对 chatgpt 的咨询
为了找到具有相同名称的员工,并将结果放入一个新的数组中,我们可以首先使用一个映射(map)来存储每个名称及其出现的次数。然后,我们可以遍历原始数组并使用映射来判断是否有重复的名称。
以下是一个示例代码,演示如何实现这一目标:
package main
import (
"fmt"
)
// 定义员工结构
type Employee struct {
Name string
ID int
}
// findDuplicates 返回具有重复名称的员工列表
func findDuplicates(emps []Employee) []Employee {
nameCount := make(map[string]int)
duplicates := make([]Employee, 0)
// 计算每个名称的出现次数
for _, emp := range emps {
nameCount[emp.Name]++
}
// 找到具有重复名称的员工
for _, emp := range emps {
if nameCount[emp.Name] > 1 {
duplicates = append(duplicates, emp)
nameCount[emp.Name]-- // 减少计数,避免重复添加
}
}
return duplicates
}
func main() {
employees := []Employee{
{Name: "Alice", ID: 1},
{Name: "Bob", ID: 2},
{Name: "Charlie", ID: 3},
{Name: "Bob", ID: 4},
{Name: "Alice", ID: 5},
}
duplicateEmployees := findDuplicates(employees)
fmt.Println(duplicateEmployees) // 输出有重复名称的员工
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)
2019-09-24 OPGL+VS2017+GLFW+GLEW配置详细步骤