function - 将不同类型的参数传递给函数

标签 function data-structures types go parameters

我有这个函数,我想让它能够接收所有类型的 slice ,不仅是 []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
}

提前致谢=]

最佳答案

如果您更改函数签名以接受接口(interface){},您可以获得适用于内置类型的东西。

package main

import "fmt"

func main() {
    x := []interface{}{"bob", "doug", "bob"}
    fmt.Println(RemoveDuplicate(x))
    y := []interface{}{1, 3, 1}
    fmt.Println(RemoveDuplicate(y))
    z := []interface{}{"bob", "2", "doug", 3, 2, "bob"}
    fmt.Println(RemoveDuplicate(z)) 
}

func RemoveDuplicate(arr []interface{}) []interface{} {
    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
}

查看常见问题解答Can I convert a []T to an []interface{}? (以及之前的)了解更多信息。

关于function - 将不同类型的参数传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31355426/

相关文章:

Python - 没有返回逻辑的递归函数

javascript - 在 AngularJS 中对一组对象进行分组

c - 具有将矩阵乘以标量的函数的程序

JavaScript滚动: How to execute function only once with least amount of CPU usage?

c - 意外的结果 - 寻找最大值和第二最大值

swift !类型运算符

struct - Julia 中的不可变与结构以及类型与可变结构

data-structures - Julia:自引用和递归类型

algorithm - 以下情况的有用数据结构

scala - 概括一个 "next permutation"函数