. , , visited unique, , unique . , unique , , for "". , , , none unique.
, a struct Go , . visit 2 int , , visit =, , reflect.DeepEqual(). . Spec: :
, . , blank .
, , :
visited := []visit{
visit{1, 100},
visit{2, 2},
visit{1, 100},
visit{1, 1},
}
var unique []visit
for _, v := range visited {
skip := false
for _, u := range unique {
if v == u {
skip = true
break
}
}
if !skip {
unique = append(unique, v)
}
}
fmt.Println(unique)
( Go Playground):
[{1 100} {2 2} {1 1}]
Alternative
, Go , map[visit]bool . ! , visit , (. ).
visited := []visit{
visit{1, 100},
visit{2, 2},
visit{1, 100},
visit{1, 1},
}
unique := map[visit]bool{}
for _, v := range visited {
unique[v] = true
}
fmt.Println(unique)
( ):
map[{2 2}:true {1 1}:true {1 100}:true]
"" - .
visit , . :
var unique []visit
m := map[visit]bool{}
for _, v := range visited {
if !m[v] {
m[v] = true
unique = append(unique, v)
}
}
fmt.Println(unique)
( , Go Playground):
[{1 100} {2 2} {1 1}]
, : m[v] true, v ( true - , ). v , m[v] , false bool, , v . . Spec: :
a M:
... nil , a[x] M