我有两个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中将不同类型传递给相同的函数以及如何.我用谷歌搜索,但找不到任何相关的东西.
您可以使用接口 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)
你实际检查类型并根据类型做某事的地方.