How to convert an int value to string in Go?

  1. Itoa function from strconv package
  2. FormatInt function from strconv package
  3. fmt.Sprint method

Data types determine the values that you can be assigned to the type and the operations that can be performed on it. Conversion of datatypes is widely used operation in programming and among datatype conversions conversion of int to the string value is widely popular.

It is used while printing number to the screen or working with the number as if it was a string. Go provides string and integer conversion directly from a package coming from the standard library strconv.

If we use plain int to string conversion, the integer value is interpreted as a Unicode code point. And the resulting string will contain the character represented by the code point, encoded in UTF-8.

package main

import "fmt"

func main() {
    s := string(97)
    fmt.Printf("Value of 97 after conversion : %v\n", s)
}  

Output:

Value of 97 after conversion : a

But this is undesirable, and hence we use some standard functions to convert integers to the string data type, which are discussed below:

Itoa function from strconv package

Package strconv implements conversions to and from string representations of basic data types. To convert an integer number into a string, we use Itoa function from strconv package.

package main

import (
    "fmt"
    "strconv"
)

func main() {
    x := 138
    fmt.Printf("Datatype of 138 before conversion : %T\n", x)
    a := strconv.Itoa(x)
    fmt.Printf("Datatype of 138 after conversion : %T\n", a)

    fmt.Println("Number: " + a)
}    

Output:

Datatype of 138 before conversion : int
Datatype of 138 after conversion : string
Number: 138

FormatInt function from strconv package

We use strconv.FormatInt to format an int64 in a given base. FormatInt gives the string representation of integer in the mentioned base, for 2 <= base <= 36 and the result uses the lower-case letters a to z for digit values >= 10.

package main

import (
    "fmt"
    "strconv"
)

func main() {
    var integer_1 int64 = 31
    fmt.Printf("Value of integer_1 before conversion : %v\n", integer_1)
    fmt.Printf("Datatype of integer_1 before conversion : %T\n", integer_1)

    var string_1 string = strconv.FormatInt(integer_1, 10)
    fmt.Printf("Value of integer_1 after conversion in base 10: %v\n", string_1)
    fmt.Printf("Datatype of integer_1 after conversion in base 10 : %T\n", string_1)

    var string_2 string = strconv.FormatInt(integer_1, 16)
    fmt.Printf("Value of integer_1 after conversion in base 16 : %v\n", string_2)
    fmt.Printf("Datatype of integer_1 after conversion in base 16 : %T\n", string_2)
}    

Output:

Value of integer_1 before conversion : 31
Datatype of integer_1 before conversion : int64
Value of integer_1 after conversion in base 10: 31
Datatype of integer_1 after conversion in base 10 : string
Value of integer_1 after conversion in base 16 : 1f
Datatype of integer_1 after conversion in base 16 : string

fmt.Sprint method

When we pass an integer into the fmt.Sprint method, we get a string value of the integer.

package main

import (
    "fmt"
)

func main() {

    x := 138
    fmt.Printf("Datatype of 138 before conversion : %T\n", x)
    a := fmt.Sprint(x)
    fmt.Printf("Datatype of 138 after conversion : %T\n", a)

    fmt.Println("Number: " + a)
}  

Output:

Datatype of 138 before conversion : int
Datatype of 138 after conversion : string
Number: 138

Related Article - Go Strings

  • How to convert string to integer type in Go
  • comments powered by Disqus