Преобразования типов в Go. Часть 1
цикл статей от Viacheslav "Marpa" Sharov
Преобразование типов - процесс преобразования значения из одного типа данных в другой.
Такие преобразования -рутинная работа в деятельности программиста. Подробнее в группе VK
Давайте рассмотрим несколько примеров!
Как преобразовать строку string в int (целочисленный тип)?
Go, как и большинство современных языков, включает в себя встроенный тип данных - string.
Пример. У вас есть строка, содержащая числовое значение "108". Но, поскольку это значение представлено в виде строки, вы не можете выполнить с ним никаких математических вычислений. Вам необходимо явно преобразовать этот строковый тип в целочисленный тип, прежде чем вы сможете выполнять с ним какие-либо математические вычисления!
Для того, чтобы преобразовать строку в целочисленный тип в Golang, вы можете использовать следующие методы:
1) Функция Atoi()
Вы можете использовать функцию Atoi() пакета strconv для преобразования строки в целое значение. Atoi расшифровывается как ASCII в integer. Функция Atoi() возвращает два значения: результат преобразования и ошибку (если таковая имеется).
func Atoi(s string) (int, error)
// преобразование строки в целое число package main import ( "fmt" "log" "reflect" "strconv" ) func main() { str := "108" intVar, err := strconv.Atoi(str) if err != nil { log.Fatal(err) } fmt.Println(intVar, reflect.TypeOf(intVar), err) }
После запуска программа выведет:
108 int <nil>
2) Функция parseInt()
parseInt() интерпретирует строку s с заданной базой (от 0, 2 до 36) и разрядностью (от 0 до 64) и возвращает соответствующее значение. Эта функция принимает строковый параметр, преобразует его в соответствующий тип int на основе базового параметра. По умолчанию он возвращает значение Int64.
func parseInt(s string, base int, bitSize int) (i int64, err error)
// преобразование строки в число на основании базового параметра package main import ( "fmt" "reflect" "strconv" ) func main() { str := "100" intVar, err := strconv.ParseInt(str, 0, 8) fmt.Println(intVar, err, reflect.TypeOf(intVar)) intVar, err = strconv.ParseInt(str, 0, 16) fmt.Println(intVar, err, reflect.TypeOf(intVar)) intVar, err = strconv.ParseInt(str, 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
3) Функция Sscan()
В пакете fmt есть функция Sscan(), которая сканирует строковый аргумент и сохраняет в переменные. Эта функция считывает строку с пробелами и присваивает последовательным целочисленным переменным.
package main import ( "fmt" "log" "reflect" ) func main() { str := "108" intValue := 0 _, err := fmt.Sscan(str, &intValue) if err != nil { log.Fatal(err) } fmt.Println(intValue, reflect.TypeOf(intValue), err) }
100 int <nil>
Продолжение следует... Читайте другие наши статьи здесь
С уважением, Marpa