当我定义函数时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}我可以这样做吗?
2 回答
森林海
TA贡献2011条经验 获得超2个赞
Go 还没有像 C# 或 Java 这样的泛型。它确实有一个空接口(interface{})
如果我理解正确,以下是我认为可以回答您的问题的代码:
包主
import (
"fmt"
"reflect"
)
type generic interface{} // you don't have to call the type generic, you can call it X
func 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;
}
- 2 回答
- 0 关注
- 216 浏览
添加回答
举报
0/150
提交
取消