Как преобразовать строку в целочисленный тип в Go?

Как и большинство современных языков, Golang включает строки в качестве встроенного типа. Возьмем пример, у вас может быть строка, содержащая числовое значение «100». Однако, поскольку это значение представлено в виде строки, с ним нельзя выполнять какие-либо математические вычисления. Вам необходимо явно преобразовать этот строковый тип в целочисленный тип, прежде чем вы сможете выполнять над ним какие-либо математические вычисления. Чтобы преобразовать строку в целочисленный тип в Golang, вы можете использовать следующие методы.

Atoi() Функция

Вы можете использовать функцию Atoi() пакета strconv для преобразования строки в целочисленное значение. Функция Atoi() возвращает два значения: результат преобразования и ошибку (если она есть).

Синтаксис:

func Atoi(s string) (int, error)
package main

import (
	"fmt"
	"strconv"
	"reflect"
)

func main() {
	strVar := "100"
	intVar, err := strconv.Atoi(strVar)
	fmt.Println(intVar, err, reflect.TypeOf(intVar))
}

Вывод:

100 <nil> int

ParseInt() Функция

ParseInt интерпретирует строку s с заданным основанием (от 0, 2 до 36) и разрядностью (от 0 до 64) и возвращает соответствующее значение i. Эта функция принимает строковый параметр, преобразует его в соответствующий тип int. По умолчанию возвращает значение Int64.

func ParseInt(s string, base int, bitSize int) (i int64, err error)
package main

import (
	"fmt"
	"reflect"
	"strconv"
)

func main() {
	strVar := "100"

	intVar, err := strconv.ParseInt(strVar, 0, 8)
	fmt.Println(intVar, err, reflect.TypeOf(intVar))

	intVar, err = strconv.ParseInt(strVar, 0, 16)
	fmt.Println(intVar, err, reflect.TypeOf(intVar))

	intVar, err = strconv.ParseInt(strVar, 0, 32)
	fmt.Println(intVar, err, reflect.TypeOf(intVar))

	intVar, err = strconv.ParseInt(strVar, 0, 64)
	fmt.Println(intVar, err, reflect.TypeOf(intVar))
}

Вывод:

100 <nil> int64
100 <nil> int64
100 <nil> int64
100 <nil> int64

fmt.Sscan

Пакет fmt предоставляет функцию sscan(), которая сканирует строковые аргументы и сохраняет их в переменных. Эта функция считывает строку с пробелами и присваивает ей последовательные целочисленные переменные.

package main

import (
	"fmt"
	"reflect"
)

func main() {
	strVar := "100"
	intValue := 0
	_, err := fmt.Sscan(strVar, &intValue)
	fmt.Println(intValue, err, reflect.TypeOf(intValue))
}

Вывод:

100 <nil> int

Ответить