如何将不同类型传递给函数

Gau*_*nha 3 go

我有两个golang函数,做同样的事情,一个接受输入切片,另一个接受一个map作为输入.我想将它组合成一个函数,以避免重复.

func DoSomething([]data) {
//do something.
}

func DoSomething(map[string]data) {
    //do something.
}
Run Code Online (Sandbox Code Playgroud)

组合功能可能如下所示:

    func DoSomethingNew (param type) {
       //param could be map or slice
    }
Run Code Online (Sandbox Code Playgroud)

我想知道是否可以在golang中将不同类型传递给相同的函数以及如何.我用谷歌搜索,但找不到任何相关的东西.

Sal*_*ali 7

您可以使用接口 Go Playground

func F(data interface{}) {
    switch data.(type){
    case []int:
        fmt.Println("Slice")
        fmt.Println(data)
    case map[string]int:
        fmt.Println("Map")
        fmt.Println(data)
    }

    fmt.Println()
}
Run Code Online (Sandbox Code Playgroud)

你实际检查类型并根据类型做某事的地方.