将变量传递给结构体函数

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

Pass variable to struct function

问题

你可以通过在Multiply函数的参数列表中添加一个参数来传递number2。修改后的代码如下:

  1. type MultiplyStruct struct {
  2. Number1 int
  3. }
  4. func (m MultiplyStruct) Multiply(number2 int) int {
  5. return m.Number1 * number2
  6. }

然后,你可以像下面这样调用Multiply函数:

  1. var multiplier = MultiplyStruct{Number1: 10}
  2. result := multiplier.Multiply(20)

这样,number2的值将作为参数传递给Multiply函数,并返回结果。在调用Multiply函数时,你需要使用实例变量multiplier来调用该函数。

英文:
  1. type MultiplyStruct struct {
  2. Number1 int
  3. }
  4. func (m MultiplyStruct) Multiply() int {
  5. return m.Number1 * number2
  6. }

how can I pass number2 to the Multiply function? Would it be like this?

  1. var multiplier = MultiplyStruct(10)
  2. multiplier.Multiply(20)

答案1

得分: 1

我认为这是你想要的:

  1. package main
  2. import (
  3. "fmt"
  4. )
  5. type MultiplyStruct struct {
  6. Number1 int
  7. }
  8. func (m MultiplyStruct) Multiply(number2 int) int {
  9. return m.Number1 * number2
  10. }
  11. func main() {
  12. multipler := MultiplyStruct{Number1: 10}
  13. val := multipler.Multiply(20)
  14. fmt.Println(val)
  15. }

在 Go Playground 上查看

英文:

I think this is what you want:

  1. package main
  2. import (
  3. "fmt"
  4. )
  5. type MultiplyStruct struct {
  6. Number1 int
  7. }
  8. func (m MultiplyStruct) Multiply(number2 int) int {
  9. return m.Number1 * number2
  10. }
  11. func main() {
  12. multipler := MultiplyStruct{Number1: 10}
  13. val := multipler.Multiply(20)
  14. fmt.Println(val)
  15. }

On Go Playground

答案2

得分: 1

只是一个有趣的补充正确答案的方法。你可以创建一个柯里化函数,而不使用结构体来仅存储一个整数:

  1. func Multiply(number1 int) (func(int) int) {
  2. return func(number2 int) int {
  3. return number1 * number2
  4. }
  5. }
  6. func main() {
  7. timesTen := Multiply(10)
  8. fmt.Println(timesTen(20)) // => 200
  9. timesTwo := Multiply(2)
  10. fmt.Println(timesTwo(10)) // => 20
  11. fmt.Println(Multiply(2)(3)) // => 6
  12. }
英文:

Just an interesting addition to the correct answer. You can create a curried function without using a struct to store only an integer:

  1. func Multiply(number1 int) (func(int) int) {
  2. return func(number2 int) int {
  3. return number1 * number2
  4. }
  5. }
  6. func main() {
  7. timesTen := Multiply(10)
  8. fmt.Println(timesTen(20)) // => 200
  9. timesTwo := Multiply(2)
  10. fmt.Println(timesTwo(10)) // => 20
  11. fmt.Println(Multiply(2)(3)) // => 6
  12. }

huangapple
  • 本文由 发表于 2017年3月6日 09:18:54
  • 转载请务必保留本文链接:https://go.coder-hub.com/42616119.html
匿名

发表评论

匿名网友

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

确定