2016-09-23 79 views
1

示例代碼:https://play.golang.org/p/vl3xwMWf5G如何根據屬性更改調用golang中的函數?

在上面的代碼,我要確保,我們不不必要調用LocateBasket功能。它在GetBasketCall期間僅被調用一次。但是,如果有任何屬性更改(例如數量更改爲30),那麼我想確保當用戶調用GetBasket時,它也在內部調用LocateBasket函數。

在我的例子中,我只有一個函數,但是如果有多個屬性需要重新計算(基於屬性更改),當它們相應的Getter函數被調用時,最好的方法是什麼。

回答

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 
} 
+0

感謝您的建議。但是這種方法的問題在於,如果有多個參數,例如。明天,如果我們有一個新的函數「GetBasketColor()」,它也需要根據屬性 - 數量進行更改,那麼我必須在其他函數中實現相同的邏輯。它變得多餘。此外,如果我在一個Getfunction中設置了ball.dirty = true,則其他GetFunctions可能無法根據更改的數量屬性進行處理。 – googytech

相關問題