【问题标题】:Declaring array of receiver methods声明接收器方法数组
【发布时间】:2017-03-15 14:06:33
【问题描述】:

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

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

收件人:
func (s *Stock) addToStock(add int)

【问题讨论】:

    标签: go


    【解决方案1】:

    你可以这样做:

    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
    }
    

    【讨论】:

    • 很好,谢谢!我想错了方向,试图像这样将接收器添加到数组声明中: var updaters = [2](*Stock)func(int) {...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多