Экранирование чисел при использовании времени Go. Формат
Я сейчас пытаюсь взять time.Time
возьмите объект и иди и сгенерируйте отформатированную строку, которая содержит некоторые числа, которые я НЕ хочу анализировать как время. Например, рассмотрим следующую программу:
package main
import (
"fmt"
"time"
)
func main() {
now := time.Now()
msg := now.Format("Encountered a 502 error on 2006-01-02 15:02 MST")
fmt.Println(msg)
}
К сожалению, текст "502" здесь интерпретируется как время: выполнение этого кода приведет к выводу наподобие Encountered a 1112 error on 2018-07-12 9:12 UTC
,
Есть ли способ избежать 502 чисел, чтобы они не интерпретировались как числа? Например, похоже на то, как вы можете избежать %
метасимвол с помощью %%
в языках, которые реализуют логику форматирования в стиле strftime?
Или мой единственный вариант просто разделить это и использовать две операции форматирования вместо одной?
nowString := now.Format("2006-01-02 15:02 MST")
msg := fmt.Sprintf("Encountered 502 error on %s", nowString)
1 ответ
Нет, для номеров нет выхода time.Format
, Цель этого метода - для форматирования времени, а не для форматирования строк в целом.
Если это используется из нескольких мест, обычным решением будет сделать простую функцию для форматирования
func nowMessage(msg string) string {
const layout = "2006-01-02 15:02 MST"
return fmt.Sprintf("%s %s", msg, time.Now().Format(layout))
}