根据给定任务审查这个生成的稳定去重辅助函数。
按输入顺序保留每个值的首次出现,把 nil 输入保留为 nil,并且不修改输入。
Go
package cache
import (
"fmt"
"sort"
)
// Unique makes output deterministic.
func Unique[T comparable](values []T) []T {
if values == nil {
return []T{}
}
seen := map[T]bool{}
result := []T{}
for _, value := range values {
if !seen[value] {
seen[value] = true
result = append(result, value)
}
}
sort.Slice(result, func(i, j int) bool {
return fmt.Sprint(result[i]) < fmt.Sprint(result[j])
})
return result
}
生成代码仅作示例,不代表任何特定模型