Подстановка данных в переменную из другой переменной

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).

https://play.golang.org/p/4TbZ4vD4g4j

→ Ссылка