Golang Example - strconv FormatInt Function Guide
- Admin
- Dec 31, 2023
- Golang-examples
Learn strconv FormatInt Function with examples in the Go Language.
golang strconv FormatInt function
strconv is a standard package in go language that provides various function implementations for converting a string to types into an int, float, boolean, etc.
FormatInt is one of the important functions that is used to convert the Integer type to the String type. You can check official documentation is hereš
Here is the syntax of this function
func FormatInt(input int64, base int) string
Argument list:
input is a numeric integer value of type int64 only
the base is int arguments that are valid values from 2 to 36.
Return type:
The string value is returned which contains a numeric value.
Function Syntax
FormatInt() function accepts and parse integer type and convert based on the base value, returning a string type value.
if the base value is less than equal to 2 ie 1,0 or negative number, It throws runtime error - panic: strconv: illegal AppendInt/FormatInt base
Complete Stack trace
panic: strconv: illegal AppendInt/FormatInt base
goroutine 1 [running]:
strconv.formatBits(0x0, 0x0, 0x0, 0x46e, 0x1, 0x65514b0fc43a0000, 0xc000069eb0, 0x8, 0x10, 0xc0000341c0, ...)
A:/Golang/src/strconv/itoa.go:91 +0x51c
strconv.FormatInt(0x46e, 0x1, 0x9, 0xc000048238)
A:/Golang/src/strconv/itoa.go:29 +0xd2
main.main()
A:/Golang/work/Test.go:12 +0x4c
exit status 2
if the base value is greater than 2, It converts the integer to String binary which contains 0 and 1 only
s0 := strconv.FormatInt(55, 2)
fmt.Printf("type=%T, output=%v\n", s0, s0) //type=string, output=110111
if the base value is greater than equal to 10, the output contains lower case characters āaā to āzā which is of the hexadecimal number in a string representation
s0 := strconv.FormatInt(1234, 16)
fmt.Printf("type=%T, output=%v\n", s0, s0) //type=string, output=46e
How to convert Integer to String using Strconv FormatInt Example in Golang
Here is an example of converting Integer to different string numeric values
package main
import (
"fmt"
"strconv"
)
func main() {
input: = int64(1134)
fmt.Printf("type=%T, output=%v\n", input, input)
s0: = strconv.FormatInt(input, 2)
fmt.Printf("type=%T, output=%v\n", s0, s0)
s1: = strconv.FormatInt(input, 10)
fmt.Printf("type=%T, output=%v\n", s1, s1)
s2: = strconv.FormatInt(input, 16)
fmt.Printf("type=%T, output=%v\n", s2, s2)
}
Output:
type=int64, output=1134
type=string, output=10001101110
type=string, output=1134
type=string, output=46e
Convert integer types - Int8,Int16,Int 32 to String
FormatInt always returns the Int64 value. With int64(int8 value) code, returned Int64 value is converted to string type. Likewise, Int16(),Int32() are used to converted to Int16, Int32 types. Here is an example program to convert to other types if FormatInt accepts value other than Int64 type, It throws compilation error - cannot use input1 (type int8) as type int64 in argument to strconv.FormatInt
input1 := int8(20)
fmt.Printf("type=%T, output=%v\n", input1, input1)
s0 := strconv.FormatInt(input1, 10)
output
# command-line-arguments
.\Test.go:14:25: cannot use input1 (type int8) as type int64 in argument to strconv.FormatInt
The same error occurs for other types Int16 and Int32, Here is an error case.
func main() {
input1: = int8(34)
input2: = int16(134)
input3: = int32(1134)
fmt.Printf("type=%T, output=%v\n", input1, input1)
s0: = strconv.FormatInt(input1, 10)
fmt.Printf("type=%T, output=%v\n", input2, input2)
s1: = strconv.FormatInt(input2, 10)
fmt.Printf("type=%T, output=%v\n", s1, s1)
s2: = strconv.FormatInt(input3, 10)
fmt.Printf("type=%T, output=%v\n", s2, s2)
}
Output:
.\Test.go:14:25: cannot use input1 (type int8) as type int64 in argument to strconv.FormatInt
.\Test.go:16:25: cannot use input2 (type int16) as type int64 in argument to strconv.FormatInt
.\Test.go:18:25: cannot use input3 (type int32) as type int64 in argument to strconv.FormatInt
FormatInt
accepts Int64 value only, we need to convert Int8, Int16, Int32 to Int64 types. Followings a complete example
package main
import (
"fmt"
"strconv"
)
func main() {
input1: = int8(34)
input2: = int16(134)
input3: = int32(1134)
fmt.Printf("type=%T, output=%v\n", input1, input1)
s0: = strconv.FormatInt(int64(input1), 10)
fmt.Printf("type=%T, output=%v\n", s0, s0)
s1: = strconv.FormatInt(int64(input2), 10)
fmt.Printf("type=%T, output=%v\n", s1, s1)
s2: = strconv.FormatInt(int64(input3), 10)
fmt.Printf("type=%T, output=%v\n", s2, s2)
}
Output:
type=int8, output=34
type=string, output=34
type=string, output=134
type=string, output=1134