Как преобразовать значение int в строку в Go?

i := 123
s := string(i) 

s - это "E", но я хочу "123"

Скажите, пожалуйста, как я могу получить "123".

И в Java я могу сделать так:

String s = "ab" + "c"  // s is "abc"

как я могу concat две строки в Go?

Ответ 1

Используйте strconv пакет Itoa.

Например:

package main

import (
    "strconv"
    "fmt"
)

func main() {
    t := strconv.Itoa(123)
    fmt.Println(t)
}

Вы можете конкатенировать строки просто с помощью + 'или использовать функцию Join пакета strings.

Ответ 2

fmt.Sprintf("%v",value);

Если вы знаете, какой тип значения использует соответствующий форматтер, например %d для int

Дополнительная информация - fmt

Ответ 4

Интересно отметить, что strconv.Itoa сокращенное для

func FormatInt(i int64, base int) string

с базой 10

Пример:

strconv.Itoa(123)

эквивалентно

strconv.FormatInt(int64(123), 10)

Ответ 5

fmt.Sprintf, strconv.Itoa и strconv.FormatInt выполнит эту работу. Но Sprintf будет использовать пакет reflect, и он выделит еще один объект, поэтому он не будет хорошим выбором.

введите описание изображения здесь

Ответ 6

В этом случае оба strconv и fmt.Sprintf выполняют одно и то же задание, но использование функции strconv package Itoa - лучший выбор, потому что fmt.Sprintf выделяет еще один объект во время преобразования.

проверить результат nenchmark как проверьте этот показатель здесь: https://gist.github.com/evalphobia/caee1602969a640a4530

см. https://play.golang.org/p/hlaz_rMa0D.

Ответ 7

Преобразование int64:

n := int64(32)
str := strconv.FormatInt(n, 10)

fmt.Println(str)
// Prints "32"