我必須重構(gòu)代碼,但我不知道如何最好地定義我的結(jié)構(gòu)。我有一個(gè)米表[]Meter和Metertype Meter struct { ID string `json:"meter_id"` ConsoProd string `json:"conso_prod"` OperationID string `json:"op_id"` Measures []Measure `json :"measures"`}第 3 個(gè)字段將始終位于此處,但“測(cè)量”有多種變體,具體取決于過程中的步驟。這是一般Measure結(jié)構(gòu):// Measure is a measure from a Meter type Measure struct { IndexName string `json:"index_name"` IndexValue int `json:"index_value"` Timestamp time.Time `json:"timestamp"` Delta float64 `json:"delta"` Redistributed float64 `json:"redistributed,omitempty"` // We don t need the redistributed field in Raw Measure }首先,我們得到“原始值”type RawMeasure struct { IndexName string `json:"index_name"` IndexValue int `json:"index_value"` Timestamp time.Time `json:"timestamp"` Delta float64 `json:"delta"`}然后我們將計(jì)算重新分配的值,并將其存儲(chǔ)到字段redistributed中該措施永遠(yuǎn)不會(huì)重新分配。另外,我有2個(gè)數(shù)據(jù)源。如果數(shù)據(jù)來自source2,它永遠(yuǎn)不會(huì)有IndexName / IndexValuetype RawMeasureFromSource2 struct { Timestamp time.Time `json:"timestamp"` Delta float64 `json:"delta"`}在這里我們可以看到我可以創(chuàng)建幾個(gè)結(jié)構(gòu):(RawMeasure、RawMeasureFromSource2、Measure),然后我應(yīng)該創(chuàng)建其他 3 米變量。由于我將管理大量數(shù)據(jù),因此我需要小心優(yōu)化內(nèi)存,但這似乎會(huì)使我的代碼變得更加復(fù)雜。有沒有辦法既獲得簡(jiǎn)單的代碼又優(yōu)化內(nèi)存使用?
1 回答

汪汪一只貓
TA貢獻(xiàn)1898條經(jīng)驗(yàn) 獲得超8個(gè)贊
根據(jù)評(píng)論,每 10 分鐘 1 次測(cè)量絕對(duì)不是很多。我會(huì)為了簡(jiǎn)單起見:
type Measure struct {
IndexName *string `json:"index_name,omitempty"`
IndexValue *int `json:"index_value,omitempty"`
Timestamp time.Time `json:"timestamp"`
Delta float64 `json:"delta"`
Redistributed *float64 `json:"redistributed,omitempty"`
}
優(yōu)點(diǎn):
結(jié)構(gòu)相同,易于使用
缺點(diǎn):
每個(gè)結(jié)構(gòu)實(shí)例上丟失了幾個(gè)字節(jié)
- 1 回答
- 0 關(guān)注
- 156 瀏覽
添加回答
舉報(bào)
0/150
提交
取消