如何根据参数类型获取返回值?

当我定义函数时


func test(a int, b int) int {

    //bla

}

我必须设置参数和返回值类型。我如何根据参数类型返回值,例如


func test(argument type) type {

    //if argument type == string, must return string

    //or else if argument int, must return integer

}

我可以这样做吗?


人到中年有点甜
浏览 217回答 2
2回答

森林海

Go 还没有像 C# 或 Java 这样的泛型。它确实有一个空接口(interface{})如果我理解正确,以下是我认为可以回答您的问题的代码:包主import (  "fmt"  "reflect")type generic interface{} // you don't have to call the type generic, you can call it Xfunc main() {    n := test(10) // I happen to pass an int    fmt.Println(n)}func test(arg generic) generic {   // do something with arg   result := arg.(int) * 2   // check that the result is the same data type as arg   if reflect.TypeOf(arg) != reflect.TypeOf(result) {     panic("type mismatch")   }   return result;}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go