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

如何根据属性更改在golang中调用函数?,go,Go,示例代码: 在上面的代码中,我确保不会不必要地调用LocateBasket函数。在GetBasketCall期间只调用一次。但如果有任何属性更改(例如数量更改为30),那么我希望确保当用户调用GetBasket时,它也在内部调用LocateBasket函数 在我的示例中,我只有一个函数,但是如果有多个属性需要在调用它们相应的Getter函数时重新计算(基于属性更改),那么最好的方法是什么 编写一个setter方法,并立即定位basket或将其标记为GetBasket执行以下操作: func (b

示例代码:

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


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

编写一个setter方法,并立即定位basket或将其标记为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
}

编写一个setter方法,并立即定位basket或将其标记为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
}

谢谢你的建议。但是这种方法的问题是,如果有多个参数,例如明天如果我们有一个新函数“GetBasketColor()”,它也需要根据属性数量进行更改,那么我也必须在另一个函数中实现相同的逻辑。它变得有点多余了。此外,如果我在一个Getfunction中设置ball.dirty=true,其他Getfunction可能无法基于更改的quantity属性进行处理。谢谢您的建议。但是这种方法的问题是,如果有多个参数,例如明天如果我们有一个新函数“GetBasketColor()”,它也需要根据属性数量进行更改,那么我也必须在另一个函数中实现相同的逻辑。它变得有点多余了。此外,如果我在一个Getfunction中设置ball.dirty=true,那么其他Getfunction可能无法基于更改的quantity属性进行处理。