是否可以知道 Go 中函数的返回值类型?

例如,我想做这样的事情,


package main


import (

    "fmt"

    "reflect"

)


func main() {

    var f func(int) int

    v := reflect.ValueOf(f)

    fmt.Println(v.ReturnType() == reflect.TypeOf(1)) // => true

}

ReturnType方法在反射包中不存在。我的问题是,我可以在不使用cgo.


catspeake
浏览 322回答 1
1回答

ITMISS

而不是使用reflect.ValueOf(f)try reflect.TypeOf(f)。该Type类型有两个相关的方法,名为NumOut和Out(int)。要按顺序获取所有返回值的类型,可以使用以下循环typ := reflect.TypeOf(f)for i := 0; i < typ.NumOut(); i++ {&nbsp; &nbsp; returnType := typ.Out(i)&nbsp; &nbsp; // do something with returnType}如果您确定您的函数只有一个返回值,您始终可以使用 获取它Out(0),确保您的输入正确的标准免责声明适用。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go