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
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
Зарегистрируйтесь или войдите, чтобы получить доступ к полным ответам на все вопросы из банка вопросов.