Подстановка данных в переменную из другой переменной
reportFill := "за период с %s"
time := time.Now().Format("02.01.2006")
Помогите объединить эти 2 строки в одну с подстановкой данных из переменной time
Ответы (2 шт):
Автор решения: Senior Pomidor
→ Ссылка
используйте fmt.Sprintf
reportFill := "за период с %s"
time := time.Now().Format("02.01.2006")
println(fmt.Sprintf(reportFill, time))
Автор решения: Mark
→ Ссылка
Можно сделать как угодно
в одну строку:
attr := fmt.Sprintf("за период с %s", time.Now().Format("02.01.2006"))
в две:
reportFill := "за период с %s"
attr := fmt.Sprintf(reportFill , time.Now().Format("02.01.2006"))
https://play.golang.org/p/HFZc47m8U30
UPD:
Изначальный код больше похож на возможность гибкой установки формата вывода. В таком случае упрощать код нужно не избавлением от промежуточных переменных, а выносом установки этих переменных во внешние функции.
Например если вы хотите менять язык вывода:
package main
import (
"fmt"
"time"
)
const (
ENG = iota
RUS
)
var reportFill = "since %s" // значение по умолчанию, если язык не задан
package main
import (
"fmt"
"time"
)
const (
ENG = iota
RUS
)
var reportFill = "since %s" // значение по умолчанию, если язык не задан
func main() {
// устанавливаем язык на русский и проверяем вывод
setLang(RUS)
attr := fmt.Sprintf(reportFill, time.Now().Format("02.01.2006"))
fmt.Println(attr)
// устанавливаем язык на английский и проверяем вывод
setLang(ENG)
attr = fmt.Sprintf(reportFill, time.Now().Format("02.01.2006"))
fmt.Println(attr)
}
// установка переменных форматирования строк в зависимости от выбранного языка
func setLang(lang int) {
switch lang {
case ENG:
reportFill = "since %s"
case RUS:
reportFill = "за период с %s"
}
}
Видно, что получение значения для attr в основном коде происходит опять же в одну строку (что удобно). Но при этом вы сохраняете возможность изменить формат и даже используете это в некой логике (функция setLang).