У меня есть эта функция, и я бы хотел, чтобы она могла получать все типы срезов, а не только [] string, но [] int и т. Д. Я бы хотел знаете, есть ли какой-то способ абстрагировать тип при передаче параметра в заголовок функции, или если я должен сделать что-то другое, чтобы это сделать.Передача параметров другого типа функции
package removeDuplicate
// RemoveDuplicate remove duplicate items from slice setting it to arr2
func RemoveDuplicate(arr []string) []string {
arr2 := arr[:1]
Loop:
for i := 1; i < len(arr); {
for j := 0; j < len(arr2); {
if arr[i] != arr[j] {
j++
} else {
i++
continue Loop
}
}
arr2 = append(arr2, arr[i])
i++
}
return arr2
}
Заранее спасибо =]
Это ломтики, а не массивы. Это важно, потому что с помощью срезов вы можете работать с одними и теми же данными, а массивы - это отдельные значения. –
Примечание: если срез (как уже отмечалось, * не * массив) может быть большим, то лучшей реализацией будет построение карты (фактически набора) из входного среза, а затем превращение ключей карты в срез для вернуть. Если такого рода действия выполняются часто, то исходный тип данных должен быть изменен как карта (или составной объект, который включает карту). –
Да, я должен сказать кусочек в этом случае. Но поскольку срез описывает раздел массива, это что-то заставляет меня смутить, почему я не могу назвать его массивом - более обобщенным способом. –