以下是一个基于某个成员变量去重的结构体数组去重的示例代码: ``` type Person struct { Name string Age int Address string } func RemoveDuplicates(persons []Person, keyFunc func(p Person) string) []Person { keys := make(map[string]bool) var result []Person for _, p := range persons { key := keyFunc(p) if _, ok := keys[key]; !ok { keys[key] = true result = append(result, p) } } return result } func main() { persons := []Person{ {Name: "Alice", Age: 24, Address: "123 Main St"}, {Name: "Bob", Age: 32, Address: "456 Elm St"}, {Name: "Charlie", Age: 24, Address: "789 Oak St"}, {Name: "Dave", Age: 32, Address: "1011 Pine St"}, } uniquePersons := RemoveDuplicates(persons, func(p Person) string { return fmt.Sprintf("%d", p.Age) }) fmt.Println(uniquePersons) } ``` 该程序定义一个 `Person` 结构体,包括姓名、年龄和地址等信息。然后,定义一个 `RemoveDuplicates` 函数,该函数接受一个 `Person` 结构体数组和一个函数作为参数。该函数会使用 `keyFunc` 函数来生成每个结构体的“关键字”,然后根据这些关键字创建一个 `map` 来去重。最后,将去重后的结果存储在一个新的 `Person` 结构体数组并返回。 在 `main` 函数使用示例 `Person` 数组调用 `RemoveDuplicates` 函数,并使用一个函数来选择以年龄作为关键字进行去重。最终,去重后的结果将被打印到控制台上。