Golang使用返回两个变量的函数。

huangapple go评论66阅读模式
英文:

Golang use function that returns two variable

问题

假设有一个返回两个变量的函数。

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

假设我有一个只接受一个整数值的函数。

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)
}

有没有办法在不使用_, a := num(1, 2)的情况下只获取第二个值(a-b)?类似于prn(num(1, 2)[1])这样的方式,这种方式不起作用,但我想知道是否有类似的方法。

谢谢。

英文:

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

得分: 3

使用一个包装函数。例如,

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)
}

输出:

-1
-1
英文:

Use a wrapper function. For example,

package main

import &quot;fmt&quot;

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

huangapple
  • 本文由 发表于 2014年10月24日 00:28:54
  • 转载请务必保留本文链接:https://go.coder-hub.com/26532833.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定