Ответ 1
Если вы хотите всегда использовать представление "по умолчанию" независимо от типа, используйте %v
, как в
fmt.Sprintf("There are %v reasons to code!", num)
Следующий код
package main
import (
"fmt"
)
func main() {
fmt.Println(say(9))
}
func say(num int)(total string){
return fmt.Sprintf("There are %s reasons to code!", num)
}
Создает следующий вывод
There are %!s(int=9) reasons to code!
Мой вопрос
Что я должен сделать, чтобы интерполировать число внутри строки?
Если вы хотите всегда использовать представление "по умолчанию" независимо от типа, используйте %v
, как в
fmt.Sprintf("There are %v reasons to code!", num)
Попробуйте %d
вместо %s
. D обозначает десятичное значение.
Соответствующая документация находится здесь:
Результат говорит точно, что происходит и что вам нужно знать!
Поскольку вы пытаетесь использовать % s глагол, который предназначен для строк, вывод говорит, что: !s(int=0)
, что означает:
Значение не строка, но целое число.
Таким образом, если вы хотите знать, что использовать, посмотрите на страницу пакета fmt https://golang.org/pkg/fmt/ на "целые числа" таблица:
%b base 2
%c the character represented by the corresponding Unicode code point
%d base 10
%o base 8
%q a single-quoted character literal safely escaped with Go syntax.
%x base 16, with lower-case letters for a-f
%X base 16, with upper-case letters for A-F
%U Unicode format: U+1234; same as "U+%04X"
Итак, вы можете использовать любой из этих глаголов, чтобы правильно отобразить вывод.
Или, как говорят предыдущие ответы, вы также можете использовать глагол % v, что означает:
"значение в формате по умолчанию".