为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
人到中年有点甜 2021-08-16 19:22:34
当我定义函数时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;

}



查看完整回答
反对 回复 2021-08-16
  • 2 回答
  • 0 关注
  • 216 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信