【发布时间】:2015-07-11 09:06:08
【问题描述】:
我有这个功能,我想让它能够接收所有类型的切片,不仅是 []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
}
提前致谢 =]
【问题讨论】:
-
这些是切片,而不是数组。这很重要,因为切片可以对相同的数据进行操作,而数组是单独的值。
-
旁注:如果切片(如前所述,不是数组)可能很大,那么更好的实现是从输入切片,然后将映射键转换为切片返回。如果这种事情经常发生,那么原始数据类型可能会更改为地图(或包含地图的复合对象)。
-
是的,在这种情况下我应该说切片。但是因为切片描述了数组的一部分,这让我感到困惑,为什么我不能将它称为数组 - 以更通用的方式。
标签: function data-structures types go parameters