1 回答

TA貢獻1802條經驗 獲得超4個贊
一種選擇是將公共部分移動到另一個函數(shù),例如get(),并更改getA()并getB()調用它get():
func getB(m *m.TSR, bl string) string {
runParams, exist := m.BuildParams.Before[bl]
return get(runParams, exist)
}
func getB(m *m.TSR, bl string) string {
runParams, exist := m.BuildParams.After[bl]
return get(runParams, exist)
}
func get(runParams interface{}, exists bool) string {
if exist {
runParamsMap, ok := runParams.(map[interface{}]interface{})
if ok {
run, ok := runParamsMap["builder"]
if ok {
return run.(string)
}
}
}
return ""
}
如果m.BuildParams.Before和m.BuildParams.After屬于同一類型(是 it commonType),您可以做得更好:
func getA(m *m.TSR, bl string) string {
return get(m.BuildParams.Before, bl)
}
func getB(m *m.TSR, bl string) string {
return get(m.BuildParams.After, bl)
}
只有第一行發(fā)生了變化get():
func get(common commonType, bl string) string {
runParams, exist := common[bl]
// rest is same
}
- 1 回答
- 0 關注
- 168 瀏覽
添加回答
舉報