i := 123
s := string(i)
s - это "E", но я хочу "123"
Скажите, пожалуйста, как я могу получить "123".
И в Java я могу сделать так:
String s = "ab" + "c" // s is "abc"
как я могу concat
две строки в Go?
i := 123
s := string(i)
s - это "E", но я хочу "123"
Скажите, пожалуйста, как я могу получить "123".
И в Java я могу сделать так:
String s = "ab" + "c" // s is "abc"
как я могу concat
две строки в Go?
Используйте strconv
пакет Itoa
.
Например:
package main
import (
"strconv"
"fmt"
)
func main() {
t := strconv.Itoa(123)
fmt.Println(t)
}
Вы можете конкатенировать строки просто с помощью +
'или использовать функцию Join
пакета strings
.
fmt.Sprintf("%v",value);
Если вы знаете, какой тип значения использует соответствующий форматтер, например %d
для int
Дополнительная информация - fmt
Вы можете использовать fmt.Sprintf
См. http://play.golang.org/p/bXb1vjYbyc, например.
Интересно отметить, что strconv.Itoa
сокращенное для
func FormatInt(i int64, base int) string
с базой 10
Пример:
strconv.Itoa(123)
эквивалентно
strconv.FormatInt(int64(123), 10)
fmt.Sprintf
, strconv.Itoa
и strconv.FormatInt
выполнит эту работу. Но Sprintf
будет использовать пакет reflect
, и он выделит еще один объект, поэтому он не будет хорошим выбором.
В этом случае оба strconv
и fmt.Sprintf
выполняют одно и то же задание, но использование функции strconv
package Itoa
- лучший выбор, потому что fmt.Sprintf
выделяет еще один объект во время преобразования.
проверьте этот показатель здесь: https://gist.github.com/evalphobia/caee1602969a640a4530
Преобразование int64
:
n := int64(32)
str := strconv.FormatInt(n, 10)
fmt.Println(str)
// Prints "32"