Подтвердить что ты не робот

Как интерполировать число внутри строки

Следующий код

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!

Мой вопрос

Что я должен сделать, чтобы интерполировать число внутри строки?

4b9b3361

Ответ 1

Если вы хотите всегда использовать представление "по умолчанию" независимо от типа, используйте %v, как в

fmt.Sprintf("There are %v reasons to code!", num)

Ответ 2

Попробуйте %d вместо %s. D обозначает десятичное значение.

Соответствующая документация находится здесь:

http://golang.org/pkg/fmt/

Ответ 3

Результат говорит точно, что происходит и что вам нужно знать!
Поскольку вы пытаетесь использовать % 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, что означает:
  "значение в формате по умолчанию".