# How to convert a string to an integer in Go

This article considers a few different ways to convert a string to an integer in Go.

The easiest way to convert a string to an integer in Go is by using the `strconv.Atoi` method. It takes a string and returns the converted integer or an error if the conversion fails.

``````package main

import (
"fmt"
"log"
"strconv"
)

func main() {
str := "500"
i, err := strconv.Atoi(str)
if err != nil {
log.Fatal(err)
}

fmt.Println(i) // 500
}``````

You can also use the `strconv.ParseInt` method if you want to convert a string to a integer in a number base other than 10. As mentioned in the docs, `strconv.Atoi` is actually equivalent to `strconv.ParseInt(s, 10, 0)` converted to the `int` type.

The first argument to `ParseInt` is the string to be converted. The second is the number base (0, 2 to 36), and the third is the integer type that the result must fit into (0, 8, 16, 32, and 64). 0 is equivalent to `int`, 8 to `int8`, and so on.

``````package main

import (
"fmt"
"log"
"strconv"
)

func main() {
str := "500"
i, err := strconv.ParseInt(str, 10, 64)
if err != nil {
log.Fatal(err)
}

fmt.Println(i) // 500
}``````

Another method that may come in handy is `fmt.Sscanf`. This method scans the first string argument, and stores each space-separated value in the string into successive arguments as determined by the format string (second argument).

``````package main

import (
"fmt"
"log"
)

func main() {
str := "500 1000"
var i, j int
_, err := fmt.Sscanf(str, "%d%d", &i, &j)
if err != nil {
log.Fatal(err)
}

fmt.Println(i, j) // 500 1000
}``````

This method is great if you want to extract a number from a string for example.

``````package main

import (
"fmt"
"log"
)

func main() {
str := "http://localhost:1313"
var i int
_, err := fmt.Sscanf(str, "http://localhost:%d", &i)
if err != nil {
log.Fatal(err)
}

fmt.Println(i) // 1313
}``````

## Conclusion

In this article, we considered three ways to convert a string to an integer in Go. The `strconv.Atoi` method should suffice for most use cases, but it’s nice to know that there are other options as well. If you have any further contribution, please leave a comment below.

Thanks for reading, and happy coding!