Type switch — это конструкция в Go, похожая на обычный switch, но используемая для определения фактического типа переменной интерфейса и выполнения соответствующего блока кода в зависимости от этого типа.
Синтаксис:
golang
В этом синтаксисе:
x — это выражение интерфейсного типа.(type) — это ключевое слово, указывающее, что это type switch.v := x.(type) — это короткое объявление переменной, которое в каждом case связывает переменную v с копией x, преобразованной к типу соответствующего case. Отметьте, что в отличие от type assertion x.(T), где требуется конкретный тип T, здесь используется ключевое слово type.case T1, case T2, ... — это блоки, которые выполняются, если фактический тип x соответствует указанному типу T1, T2 и т.д.default — это необязательный блок, который выполняется, если фактический тип x не соответствует ни одному из указанных типов в case.Type switch полезен, когда нужно обработать значение интерфейса по-разному в зависимости от его базового типа.
Пример использования:
golang
Вывод:
plaintext
Также можно использовать переменную, объявленную в заголовке switch, для доступа к значению с приведенным типом внутри блока case:
golang
Вывод:
plaintext
Преимущества type switch по сравнению с цепочкой type assertion:
switch, автоматически имеет правильный тип в каждом case.