我想優化我的代碼,我有那麼下面的情況:Golang - 添加「繼承」,以結構
我有一個大致的struct
只有一個域給出了規範,讓說緩存結構例如:
# the main cache struct
type Cache struct {
name string
memory_cache map[string]interface{}
mutex *sync.Mutex
... ...
# common fields
}
# an element stored in the Cache.memory_cache map
type ElementA {
name string
count int64
}
# an element stored in the Cache.memory_cache map
type ElementB {
name string
tags []string
}
我目前的解決方案遵循先前的定義,我爲每一個元素的緩存(它必須是這樣:每個元素的一個緩存):
var cache_for_element_A Cache{}
var cache_for_element_B Cache{}
但是在這種方式下,即使我已經知道什麼是內容(當時不需要投射案例),我也必須在閱讀時始終投下memory_cache
。
下面的代碼做我想有什麼,但它定義了兩次了很多贅餘力/公共領域,因爲這個原因,我想尋找另一種解決方案。
type CacheForA struct {
name string
memory_cache map[string]ElementA{}
mutex *sync.Mutex
... ...
# common fields
}
type CacheForB struct {
name string
memory_cache map[string]ElementB{}
mutex *sync.Mutex
... ...
# common fields
}
然後,是有可能在能夠進一步當聲明發生和定義,而無需使用interface
的結構(更精確地Cache.memory_cache
)來定義一個字段?
+1感謝您的回覆並顯示了我所問的其他可能解決方案。我剛剛接受了@Not_a_Golfer的另一個答案,因爲它跟隨了一種更好的'代碼風格'。但正如所說,這將是另一個偉大的解決方案,如果我可以選擇兩個答案,我會選擇兩個;-) – damoiser