1 回答

TA貢獻1869條經驗 獲得超4個贊
理想情況下,您應該對這些數組進行后處理以刪除重復項。但是,您可以在解組期間使用帶有解組器的自定義類型來實現此目的:
type UniqueStrings []string
func (u *UniqueStrings) UnmarshalJSON(in []byte) error {
var arr []string
if err:=json.Unmarshal(in,arr); err!=nil {
return err
}
*u=UniqueStrings(dedupStr(arr))
return nil
}
在哪里
func dedupStr(in []string) []string {
seen:=make(map[string]struct{})
w:=0
for i:=range in {
if _,s:=seen[in[i]]; !s {
seen[in[i]]=struct{}{}
in[w]=in[i]
w++
}
}
return in[:w]
}
您可以對 s 使用類似的方法[]int。
您在結構中使用自定義類型:
type CustomerData struct {
Process UniqueStrings `json:"Process"`
Mat UniqueStrings `json:"Mat"`
}
- 1 回答
- 0 關注
- 103 瀏覽
添加回答
舉報