内容来自对 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) // 输出有重复名称的员工
}
标签:name,员工,golang,emp,数组,Employee,ID,Name
From: https://www.cnblogs.com/hi3254014978/p/17726104.html