2014-01-30 3 views
20
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) 
} 

мой выходкак интерполировать число в строке в golang

There are %!s(int=9) reasons to code! 

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

+0

Возможный дубликат [Голан: формат строки без печати?] (Http://stackoverflow.com/questions/11123865/golang-format-a-string-without-printing) –

ответ

30

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

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

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

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

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

1

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

Смежные вопросы