使用结构体传递多个值 GO

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

Using a struct to pass multiple values GO

问题

我只返回翻译好的部分,以下是翻译的内容:

我只有一个问题
我在这里写了一个例子

  1. package main
  2. import (
  3. "fmt"
  4. )
  5. type PACK struct {
  6. d, r int
  7. }
  8. func main() {
  9. st := &PACK{}
  10. st.d, st.r = f(12, 32)
  11. }
  12. func f(a, b int) (d int, r int) {
  13. d = a / b
  14. r = a ^ b
  15. return
  16. }

所以,问题是 - 我如何做到像这样

  1. st := &PACK{ f(1,2) }

我希望我的函数返回的参数可以作为结构体的初始化器!

英文:

I have just one question
I wrote an example here

  1. package main
  2. import (
  3. "fmt"
  4. )
  5. type PACK struct {
  6. d, r int
  7. }
  8. func main() {
  9. st := &PACK{}
  10. st.d, st.r = f(12, 32)
  11. }
  12. func f(a, b int) (d int, r int) {
  13. d = a / b
  14. r = a ^ b
  15. return
  16. }

So, the question is - how can i make thing like this

  1. st := &PACK{ f(1,2) }

I want my function return arguments to be a struct initializer!

答案1

得分: 1

你不能这样做,这是不可能的。

英文:

You cannot do this, it is not possible.

答案2

得分: 0

你可以在结构体Pack上创建一个方法,用于初始化其值。例如:

  1. package main
  2. import "fmt"
  3. type Pack struct {
  4. d, r int
  5. }
  6. func (p *Pack) init(a, b int) {
  7. p.d = a / b
  8. p.r = a ^ b
  9. }
  10. func main() {
  11. pack := Pack{} // 这里的d和r被初始化为0
  12. pack.init(10, 4)
  13. fmt.Println(pack)
  14. }

结果为:

  1. {2 14}

goplayground

英文:

You can create a method on struct Pack, that will initialize the values. For example:

  1. package main
  2. import "fmt"
  3. type Pack struct {
  4. d, r int
  5. }
  6. func (p *Pack) init (a, b int) {
  7. p.d = a / b
  8. p.r = a ^ b
  9. }
  10. func main() {
  11. pack := Pack{} // d and r are initialized to 0 here
  12. pack.init(10, 4)
  13. fmt.Println(pack)
  14. }

Result:

  1. {2 14}

goplayground

huangapple
  • 本文由 发表于 2015年7月1日 02:52:39
  • 转载请务必保留本文链接:https://go.coder-hub.com/31146179.html
匿名

发表评论

匿名网友

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

确定