将变量传递给struct函数

时间:2017-03-06 01:18:54

标签: go struct

type MultiplyStruct struct {
    Number1 int
}

func (m MultiplyStruct) Multiply() int {
    return m.Number1 * number2
}

如何将number2传递给Multiply函数?会这样吗?

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

2 个答案:

答案 0 :(得分:1)

认为这就是你想要的:

package main

import (
    "fmt"
)

type MultiplyStruct struct {
    Number1 int
}

func (m MultiplyStruct) Multiply(number2 int) int {
    return m.Number1 * number2
}

func main() {
    multipler := MultiplyStruct{Number1: 10}
    val := multipler.Multiply(20)
    fmt.Println(val)
}

On Go Playground

答案 1 :(得分:1)

正确答案只是一个有趣的补充。您可以创建curried函数,而无需使用struct只存储整数:

func Multiply(number1 int) (func(int) int) {
    return func(number2 int) int {
        return number1 * number2
    }
}

func main() {
    timesTen := Multiply(10)
    fmt.Println(timesTen(20))    // => 200
    timesTwo := Multiply(2)   
    fmt.Println(timesTwo(10))    // => 20

    fmt.Println(Multiply(2)(3))  // => 6
}