登录
首页 >  Golang >  Go问答

如何确定函数返回值的数量

来源:stackoverflow

时间:2024-04-06 20:36:33 456浏览 收藏

从现在开始,努力学习吧!本文《如何确定函数返回值的数量》主要讲解了等等相关知识点,我会在golang学习网中持续更新相关的系列文章,欢迎大家关注并积极留言建议。下面就先一起来看一下本篇正文内容吧,希望能帮到你!

问题内容

如何获取函数的返回值长度,效果类似如下:

func Foo() (int, int){
    ...
}
func Bar() (int, float, bool, string, error){
    ...
}
n1 := getReturnLength(Foo) // shall be 2
n2 := getReturnLength(Bar) // shall be 5

我该如何实现 getreturnlength 函数或类似的函数?


解决方案


您可以使用 reflect 包来实现它。

reflect.typeof(foo).numout()

您可以在此处了解反射包 https://golang.org/pkg/reflect/#Type

您不应使用反射将函数的返回值放入切片中。相反,您应该返回一个在结果范围内迭代的切片

package main

import (
"fmt"
)

func foo(num int) []int {

    s := make([]int, num)

    for i := 1; i <= num; i++ {
        s[i-1] = i
    }

    return s
}

func main() {
    r := foo(5)

       // Will run 0 times if len(r) == 0
       // Obviously, if you need 1+
       // results, you need to guard this
      // with something like 
      //   if len(r) < 1...
    for i := range r {
        fmt.Printf("Hello, %d!\n", r[i])
    }

    // Or, simpler
    for i, v := range foo(5) {
        fmt.Printf("Index %d => Value %d\n", i, v)
    }
}

到这里,我们也就讲完了《如何确定函数返回值的数量》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>