douhu2131 2014-10-23 16:28
浏览 193
已采纳

Golang使用函数返回两个变量

Assume there is a function that returns two variables.

func num(a,b int) (int,int) {
    return a+b, a-b
}

http://play.golang.org/p/bx05BugelV

And assume I have a function that only takes one int value.

package main

import "fmt"

func main() {
    fmt.Println("Hello, playground")
    _, a := num(1, 2)
    prn(a)

}

func num(a, b int) (int, int) {
    return a + b, a - b
}

func prn(a int) {
    fmt.Println(a)
}

http://play.golang.org/p/VhxF_lbVf4

Is there anyway I can only get the 2nd value (a-b) without having _,a:=num(1,2)?? Something like prn(num(1,2)[1]) <-- this won't work, but I'm wondering if there's a similar way

Thank you

  • 写回答

1条回答 默认 最新

  • doude5860 2014-10-23 16:51
    关注

    Use a wrapper function. For example,

    package main
    
    import "fmt"
    
    func main() {
        _, a := num(1, 2)
        prn(a)
        prn1(num(1, 2))
    
    }
    
    func num(a, b int) (int, int) {
        return a + b, a - b
    }
    
    func prn(a int) {
        fmt.Println(a)
    }
    
    func prn1(_, b int) {
        prn(b)
    }
    

    Output:

    -1
    -1
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 链接问题 C++LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题
  • ¥15 Python时间序列如何拟合疏系数模型
  • ¥15 求学软件的前人们指明方向🥺
  • ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接