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

Утверждение типа в Go

Конкретный тип достают из интерфейса проверкой, которая сообщает, удалась ли она. Запись похожа на вызов с точкой и типом в скобках после значения интерфейса. Вторая переменная ok показывает, совпал ли тип с ожидаемым.

Положим строку в any и безопасно прочитаем ее:

package main import "fmt" func main() { var v any = "hi" s, ok := v.(string) if ok { fmt.Println(s) } else { fmt.Println("not a string") } }

ok равно истине, в s попала строка "hi". Если бы внутри было число, ok стало бы ложью, а s получило бы нулевое значение строки. Если оставить только одно имя слева без ok, при неверном типе программа останавливается.

Утверждение работает и с другими именами интерфейсов, не только с any. Главное, чтобы слева было значение интерфейса, а справа в скобках стоял конкретный тип.

Дано значение:

package main import "fmt" var v any = 15

Достаньте int через утверждение с ok и выведите число, если проверка удалась.

Дан следующий код:

package main var v any = true

Попробуйте утверждение к string с ok и выведите ok.

Скажите, что произойдет с программой, если записать s := v.(string), когда внутри v лежит число.

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