Что такое 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.
Важно отметить, что такое поведение может привести к неожиданным результатам, поэтому всегда следует убедиться, что значения, которые вы записываете в переменные, не превышают максимально допустимые для их типа.
