Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗goSpIfTS 35 of 280 menu
◀ ▶

Переключатель типов в Go

Переключатель может разобрать значение интерфейса по конкретным типам. В заголовке пишут имя переменной и выражение утверждения с ключевым словом type. В каждой ветке case указывают тип, с которым сравнивают содержимое.

Напишем функцию, которая печатает строку, число или сообщение для остальных типов:

package main import "fmt" func show(x any) { switch v := x.(type) { case string: fmt.Println("str", v) case int: fmt.Println("int", v) default: fmt.Println("other") } } func main() { show("hi") show(10) show(true) }

Первый вызов попал в ветку string, второй в int, третий в default. Переменная v в каждой ветке имеет уже конкретный тип, под который попали. После выполнения одной ветки управление не переходит в следующую: каждая ветка заканчивается отдельно.

Ветку default ставят, когда нужно обработать все остальные типы. Без нее неизвестный тип просто не попадет ни в один case, и блок ничего не сделает.

Дана функция:

package main import "fmt" func kind(x any) { switch x.(type) { case bool: fmt.Println("bool") case float64: fmt.Println("float") default: fmt.Println("unknown") } }

Вызовите kind с true и с 1.5.

Перепишите show из урока так, чтобы в ветке string выводился только текст без префикса.

Скажите, выполнятся ли две ветки case подряд для одного значения без отдельной команды перехода.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить