如何根据属性更改调用golang中的函数?

时间:2016-09-23 14:24:04

标签: go

示例代码:https://play.golang.org/p/vl3xwMWf5G

在上面的代码中,我确保,我们不会不必要地调用LocateBasket函数。在GetBasketCall期间只调用一次。但是如果有任何属性更改(例如,数量已更改为30),那么我想确保当用户调用GetBasket时它也在内部调用LocateBasket函数。

在我的示例中,我只有一个函数,但是如果有多个属性需要重新计算(基于属性更改),当它们调用相应的Getter函数时,执行相同操作的最佳方法是什么。

1 个答案:

答案 0 :(得分:0)

编写一个setter方法,并立即将LocateBasket标记为GetBasket:

func (ball *Ball) SetQuantity(n int){
  ball.Quantity = n
  // ball.LocateBasket(ball)
  ball.dirty = true
}

func (ball *Ball) GetBasket() BasketType {
  if ball.dirty{
    ball.LocateBasket(ball)
    ball.dirty = false
    return ball.basket
}