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

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

Golang use function that returns two variable

问题

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

  1. func num(a, b int) (int, int) {
  2. return a + b, a - b
  3. }

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

  1. package main
  2. import "fmt"
  3. func main() {
  4. fmt.Println("Hello, playground")
  5. _, a := num(1, 2)
  6. prn(a)
  7. }
  8. func num(a, b int) (int, int) {
  9. return a + b, a - b
  10. }
  11. func prn(a int) {
  12. fmt.Println(a)
  13. }

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

谢谢。

英文:

Assume there is a function that returns two variables.

  1. func num(a,b int) (int,int) {
  2. return a+b, a-b
  3. }

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

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

  1. package main
  2. import "fmt"
  3. func main() {
  4. fmt.Println("Hello, playground")
  5. _, a := num(1, 2)
  6. prn(a)
  7. }
  8. func num(a, b int) (int, int) {
  9. return a + b, a - b
  10. }
  11. func prn(a int) {
  12. fmt.Println(a)
  13. }

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

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

  1. package main
  2. import "fmt"
  3. func main() {
  4. _, a := num(1, 2)
  5. prn(a)
  6. prn1(num(1, 2))
  7. }
  8. func num(a, b int) (int, int) {
  9. return a + b, a - b
  10. }
  11. func prn(a int) {
  12. fmt.Println(a)
  13. }
  14. func prn1(_, b int) {
  15. prn(b)
  16. }

输出:

  1. -1
  2. -1
英文:

Use a wrapper function. For example,

  1. package main
  2. import &quot;fmt&quot;
  3. func main() {
  4. _, a := num(1, 2)
  5. prn(a)
  6. prn1(num(1, 2))
  7. }
  8. func num(a, b int) (int, int) {
  9. return a + b, a - b
  10. }
  11. func prn(a int) {
  12. fmt.Println(a)
  13. }
  14. func prn1(_, b int) {
  15. prn(b)
  16. }

Output:

  1. -1
  2. -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:

确定