a := "%shello%s"
b:= fmt.Sprintf("%sWorld",a)
Это прекрасно работает, в результате получается строка "%shello%sWorld"
.
Проблема в том, как вы печатаете это:
fmt.Printf(b)
fmt.Printf()
обрабатывает b
как строку формата , и поскольку значение b
содержит %s
, ожидается, что вы также передадите аргументы (которые вы нет), поэтому фактический вывод содержит сообщения об ошибках.
Вместо этого напечатайте его с помощью fmt.Println()
:
fmt.Println(b)
И вывод будет (попробуйте на Go Playground ):
%shello%sWorld