声明接收器方法的数组

时间:2017-03-14 23:35:45

标签: go

这是一个使用函数数组的小例子。我想将其转换为接收器方法的数组。第11行阵列的正确声明是什么? https://play.golang.org/p/G62Cxm-OG2

函数声明将改为:
func addToStock(s * Stock,add int)

要:
func(s * Stock)addToStock(add int)

1 个答案:

答案 0 :(得分:0)

你可以这样做:

package main

import (
    "fmt"
)

type Stock struct {
    qty int
}

var updaters = [2]func(*Stock, int){
    func(s *Stock, i int){s.add(i)},
    func(s *Stock, i int){s.remove(i)},
}

func main() {
    s := Stock{10}

    fmt.Println("Stock count =", s.qty)

    updaters[0](&s, 2)

    fmt.Println("Stock count =", s.qty)

    updaters[1](&s, 5)

    fmt.Println("Stock count =", s.qty)
}

func (s *Stock)add(add int) {
    s.qty += add
}

func (s *Stock)remove(sub int) {
    s.qty -= sub
}
相关问题