Целочисленные типы данных в Go
Нужно целое число без дробной части, например 35, -50 или 1345000? Для этого и предназначены целочисленные типы.
Они делятся на два семейства:
- Знаковые целые - хранят как положительные, так и отрицательные числа
- Беззнаковые целые - хранят ноль и положительные числа, но никогда отрицательные
Примечание: Если не указать тип, Go использует int — тип по умолчанию для целых чисел.
Знаковые целые
Семейство ключевых слов int объявляет знаковые целые, поэтому такие переменные принимают как отрицательные, так и положительные числа:
Пример
Prompt
Объявите две знаковые переменные типа int (положительную и отрицательную). Выведите их тип и значение с помощью Printf.
Вывод: Программа на Go и захваченный вывод
main.go
package main
import ("fmt")
func main() {
var x int = 500
var y int = -4500
fmt.Printf("Тип: %T, значение: %v\n", x, x)
fmt.Printf("Тип: %T, значение: %v\n", y, y)
}
Беззнаковые целые
Семейство ключевых слов uint объявляет беззнаковые целые, поэтому такие переменные не могут хранить отрицательные числа:
Пример
Prompt
Объявите две беззнаковые переменные типа int. Выведите их тип и значение с помощью Printf.
Вывод: Программа на Go и захваченный вывод
main.go
package main
import ("fmt")
func main() {
var x uint = 500
var y uint = 4500
fmt.Printf("Тип: %T, значение: %v\n", x, x)
fmt.Printf("Тип: %T, значение: %v\n", y, y)
}
Какой целочисленный тип использовать?
Выбирайте, исходя из значений, которые собираетесь хранить.
Каждый тип охватывает только определённый диапазон, и Go сообщает об ошибке, когда значение выходит за его пределы. Возьмём int8: он охватывает диапазон от -128 до 127, поэтому 1000 в него не поместится.