Go 如何从结构切片中删除重复项?

Go 如何从结构切片中删除重复项?,go,struct,slice,Go,Struct,Slice,我有一个这样的结构: type structData struct{ 数据名字符串 dataNum int } 我已经从中创建了一个片段,如下所示: dataSlice:=[]*structData{} 我有一个填充dataName字符串的循环,在这之后,我希望检查结构切片并删除重复项。 我之所以特别提到这一点,是因为目前,dataNum是0。因此,我不想检查我的结构中的字符串是否相同,检查整个结构是否相等是完全正确的(如果可能的话,否则我也可以检查dataName字符串中的重复项,我只是不

我有一个这样的结构:

type structData struct{
数据名字符串
dataNum int
}
我已经从中创建了一个片段,如下所示:

dataSlice:=[]*structData{}
我有一个填充
dataName
字符串的循环,在这之后,我希望检查结构切片并删除重复项。 我之所以特别提到这一点,是因为目前,
dataNum
是0。因此,我不想检查我的结构中的字符串是否相同,检查整个结构是否相等是完全正确的(如果可能的话,否则我也可以检查
dataName
字符串中的重复项,我只是不知道在设计中什么看起来更好)

my struct slice的输出示例如下:

&{dataname1 0}
&{dataname1 0}
&{dataname2 0}
&{dataname2 0}
我希望它看起来像什么:

&{dataname1 0}
&{dataname2 0}

您可以使用映射检查重复项,其中结构是映射的键

主程序包
进口(
“fmt”
)
类型structdatastruct{
数据名字符串
dataNum int
}
func(d*structData)字符串()字符串{
返回fmt.Sprintf((%s,%d)”,d.dataName,d.dataNum)
}
func main(){
数据许可证:=[]*structData{
{“dataname1”,0},
{“dataname1”,0},
{“dataname2”,0},
{“dataname2”,0},
}
m:=map[structData]struct{}{}
dataSlice2:=[]*structData{}
对于ud:=范围数据片{
如果u,ok:=m[*d];!ok{
dataSlice2=附加(dataSlice2,d)
m[*d]=struct{}{}
}
}
fmt.Printf(“%v\n”,数据许可证)
fmt.Printf(“%v\n”,数据许可证2)
}

你试过什么?您遇到了什么问题?我尝试过制作地图,但都没有成功,例如,我没有收到任何错误,但重复的没有被删除。也许,我没有正确地将映射与结构一起使用,但我不确定,我没有正确地理解结构,因此我放弃了这个想法,认为它根本不起作用。请更新您的问题,以显示您尝试的代码,并详细说明您遇到的问题。