Что такое type switch?
Type switch
в Go - это способ проверить, какого типа является значение, хранящееся в интерфейсе. Это похоже на обычныйswitch
, но вместо значений в кейсах указываются типы.
1 | package main |
Какие типы данных есть в Golang?
- Целочисленные типы:
int8
,int16
,int32
,int64
,uint8
,uint16
,uint32
,uint64
,byte
(синоним дляuint8
),rune
(синоним дляint32
),int
иuint
. - Числа с плавающей точкой:
float32
иfloat64
. - Строки:
string
. - Булев тип:
bool
. - Составные типы: Массивы, срезы, структуры, ассоциативные массивы
Какой длины руна?
rune
- это алиас для int32
. Это означает, что rune
занимает 4 байта или 32 бита. Каждая rune
представляет собой один Юникод символ. Например, строка может быть преобразована в срез rune
([]rune
), и каждый элемент этого среза будет представлять собой один Юникод символ.
Как реализовать Enum в Golang?
В Go нет встроенной поддержки перечислений (enum), но их можно эмулировать с помощью констант. Вот пример реализации enum в Go:
1 | package main |
Что если во время компиляции переполним тип? В int8 запишем 256?
Если вы попытаетесь записать значение, превышающее максимально допустимое для данного типа, в Go, то произойдет переполнение типа.
Например, int8
может хранить значения от -128 до 127. Если вы попытаетесь записать 256 в переменную типа int8
, то произойдет переполнение. В результате, вместо 256 будет записано значение, которое соответствует остатку от деления 256 на 256 (количество возможных значений для int8
), то есть 01.
Важно отметить, что такое поведение может привести к неожиданным результатам, поэтому всегда следует убедиться, что значения, которые вы записываете в переменные, не превышают максимально допустимые для их типа
Что происходит при переполнении числа, например в uint8 выйдем за границу на 1?
Если вы попытаетесь записать значение, превышающее максимально допустимое для данного типа, в Go, то произойдет переполнение типа.
Например, uint8
может хранить значения от 0 до 255. Если вы попытаетесь записать 256 в переменную типа uint8
, то произойдет переполнение. В результате, вместо 256 будет записано значение, которое соответствует остатку от деления 256 на 256 (количество возможных значений для uint8
), то есть 0.
Важно отметить, что такое поведение может привести к неожиданным результатам, поэтому всегда следует убедиться, что значения, которые вы записываете в переменные, не превышают максимально допустимые для их типа.