У меня есть следующая функция, которая должна предоставлять строки с данными в двух вариантах
- Предоставлено значение из конфигурации (можно изменять только значения
7MB
или 3MB
) всепрефикс тот же - Если в конфигурации не предоставлен откат к значениям по умолчанию, которые
7MB
и 3MB
пример
, если я не получу никакого значения отAPI config функция должна возвращать значения по умолчанию , что жестко задано в функции.например:
“l_sh_dit conf_data 7MB
l_sh_dit cert_data 3MB”
если я получаю значение из приложения config
, скажем, 1MB (conf) и 100MB (cert) соответственно, вывод функции должен выглядеть как l
“l_sh_dit conf_data 1MB
l_sh_dit cert_data 100MB”
Проблема в том, что у меня уже есть defaults
значение hard-coded
, как я могу эффективно обновить в каждом element
в массиве только последнее значение (число 10M или все другие значения)?
Я пытался с API строителя строк безуспешно, так как это немного сложно, что здесь может быть не так?
func getShCfg() string{
var out []string
var b1 strings.Builder
la:= "l_sh_dit conf_data 7MB"
lb := "l_sh_dit cert_data 3MB"
cfg, ok := c.(config.Configuration)
if !ok {
log.Errorf(“error:”, c)
return ""
}
// here I got the data from config, else fallback to defaults
if len(cfg.A) > 0 {
// HERE is my problem which doesn’t works
b1.WriteString("l_sh_dit")
b2 := b1
b2.WriteString("conf_data")
b3 := b2
b3.WriteString(cfg.A)
out = append(out, b3)
} else {
out = append(out, la)
}
// here I got the data from config, else fallback to defaults
if len(cfg.B) > 0 {
// HERE is my problem which doesn’t works
b1.WriteString("l_sh_dit")
b2 := b1
b2.WriteString("cert_data")
b3 := b2
b3.WriteString(cfg.B)
out = append(out, b3)
} else {
out = append(out, lb)
}
return strings.Join(out, ";\n\r") + ";"
}