#5.1 golang Типы данных и nil - Go для начинающих
Primary tabs
Forums:
Ранее мы говорили об объявлении переменных, теперь разберем простые типы данных.
Тип int - целые числа
Тип int — платформозависимый тип в Go. На хранение значения выделяется либо 32 бита, либо 64 бита в зависимости от разряднсти вашей операционной системы.
При объявлении переменной с указанием int:
// int — платформозависимый тип, 32/64 var i int = 10
- разрядноость типа int выбирается автоматически.
Если вас не устраивает разрядность или вы хотите большего контроля, то в Go поддержка от int8 до int64, которая позволяет хранить большие значения:
// int - платформозависимый тип, 32/64 var i int = 10 // автоматически выбранный int var autoInt = -10 // Как тип можно указать: int8, int16, int32, int64 var bigInt int64 = 1<<32 - 1
Есть беззнаковый int — uint, он тоже может быть платформозависимым диапазона хранимых данных, к нему же относятся и более "точные" типы от uint8 до uint64:
Примеры:
// Беззнаковый платформозависимый тип, 32/64 var unsignedInt uint = 100500 // Беззнаковый тоже может быть: uint8, unit16, uint32, unit64 var unsignedBigInt uint64 = 1<<64 - 1
Тип float - вещественные числа
Числа с плавающей точкой представлены как одинарной точности float 32, так и двойной точности.
// float32, float64 var pi float32 = 3.141 var e = 2.718 goldenRatio := 1.618
Для них тоже есть автоподстановка типа, автоугадывание типа, значение по умолчанию для них тоже ноль.
Тип bool - логический, булев тип
В логических переменных значение по умолчанию ноль, и оно тоже может угадываться автоматически.
// bool логический тип var b bool // false по-умолчанию var isOk bool = true var success = true cond := true
Тип complex - комплексные числа
Зато в go есть комплексные переменные и полный набор функций для работы с ними, объявлять можно так:
// complex64, complex128 var c complex128 = -1.1 + 7.12i c2 := -1.1 + 7.12i
хотя на практике этот тип данных используется не очень часто.
nil - "пустое" значение по умолчанию
Выше мы несколько раз говорили о значениях по умолчанию: если переменную объявили, но ничего ей не присвоили, она не окажется "неопределенной" — в ней будет вполне конкретное нулевое значение:
- для чисел это 0,
- для логического типа false,
- для строк - пустая строка.
Для целой группы типов, которые мы изучим далее, такое значение по умолчанию обозначается словом nil (читается "нил", с английского примерно - "ничто"): переменная объявлена, но конкретного значения в ней еще нет.
Таких типов в Go несколько - указатели, срезы, хэш-таблицы, каналы, функции и интерфейсы, со всеми ими мы разберемся в следующих уроках.
Пока достаточно запомнить сам факт: если распечатать такую "пустую" переменную, мы увидим не число и не пустую строку, а именно nil:
var p *int // указатель на число (что такое указатели - разберем далее по курсу) fmt.Println(p) // выведет: nil
При этом попытка обратиться к значению, которого нет, приведет к панике - критической ошибке:
var p *int fmt.Println(*p) // panic: runtime error: // invalid memory address or nil pointer dereference
Поэтому в коде на Go часто встречается проверка "а есть ли вообще значение":
if p != nil {
fmt.Println(*p) // печатаем значение, только если оно есть
}
Если вы уже писали на PHP или Java - nil здесь играет ту же роль, что null (а в C++ - nullptr).
Видео-материалы
- golang Простые типы данных: ВкВидео | Ютуб | Телеграм
- Log in to post comments
- 323 reads