How can i remove duplicate structs in a Go slice:
[{ 0 0 A 16 {0 0 0} {nigeria abia} {0 0} female 0 0 false [] map[] {false false false false false false false false false}}
{ 0 0 A 16 {0 0 0} {nigeria abia} {0 0} female 0 0 false [] map[] {false false false false false false false false false}}
{ 0 0 B 17 {0 0 0} {nigeria abia} {0 0} female 0 0 false [] map[] {false false false false false false false false false}}
{ 0 0 B 17 {0 0 0} {nigeria abia} {0 0} female 0 0 false [] map[] {false false false false false false false false false}}
{ 0 0 D 15 {0 0 0} {nigeria abia} {0 0} female 0 0 false [] map[] {false false false false false false false false false}}
{ 0 0 D 15 {0 0 0} {nigeria abia} {0 0} female 0 0 false [] map[] {false false false false false false false false false}}]
I want to return only 1 instance of each struct in this slice.
I tried this function
func unique(src []Person) []Person {
keys := make(map[*Person]bool)
list := []Person{}
for _, entry := range src {
if _, value := keys[&entry]; !value {
keys[&entry] = true
list = append(list, entry)
}
}
return list
}
but it returns only 1 item:
[{ 0 0 A 16 {0 0 0} {nigeria abia} {0 0} female 0 0 false [] map[] {false false false false false false false false false}}]
vs what I want:
[
{ 0 0 A 16 {0 0 0} {nigeria abia} {0 0} female 0 0 false [] map[] {false false false false false false false false false}}
{ 0 0 B 17 {0 0 0} {nigeria abia} {0 0} female 0 0 false [] map[] {false false false false false false false false false}}
{ 0 0 D 15 {0 0 0} {nigeria abia} {0 0} female 0 0 false [] map[] {false false false false false false false false false}}]