Я создаю пакет утилит для своего проекта.
Многие из моих срезов строк нуждаются в функции для
1. удалить дубликаты
2. удалить пустые строки
Я знаю 1 способ сделать это: 1. Добавьте функцию для каждого случая, которая принимает фрагмент строки и возвращает фрагмент строки
func removeEmpty(s []string) []string {
i := 0 // i points to next available pos
for _, v := range s {
if v != "" {
s[i] = v
i++
}
}
return s[:i]
}
func dedup(s []string) []string {
i := 0 // i points to next available pos
mp := map[string]bool{}
for _, v := range s {
if _, ok := mp[v]; !ok {
s[i] = v
mp[v] = true
i++
}
}
return s[:i]
}
когда я применяю эти 2 функции к своему срезу, я могу сделать:
mySlice := string[]{}
mySlice = dedup(removeEmpty(mySlice))
Я хочу сделать что-то вроде:
mySlice = mySlice.dedup().removeEmpty()
или
mySlice.dedup().removeEmpty()
Может быть, я могу добавить пользовательский метод к слайсу []?
Я пытался написать это
func (s []string) removeEmpty() {
}
Я получаю сообщение об ошибке.