Библиотека задач по C# | тесты, код, задания
前往频道在 Telegram
Задачи и тесты по C# для тренировки и обучения. Учиться у нас: https://clc.to/3e1SCw По рекламе: @tproger_sales_bot Для обратной связи: @proglibrary_feeedback_bot Наши каналы: https://t.me/proglibrary/9197
显示更多4 879
订阅者
-324 小时
-197 天
-5830 天
帖子存档
Repost from Библиотека Go-разработчика | Golang
💡Как тривиально проверить значения интерфейса на nil?
В Go новички часто сталкиваются с проблемой интерфейсных переменных, которым присваивае
тся nil указатель. В таком случае, хотя значение в интерфейсе является nil, сама переменная интерфейса не равна nil.
Пример: создаем переменную x как указатель на int, который по умолчанию nil, и переменную y как пустой интерфейс, который тоже nil по умолчанию. После присваивания x переменной y, интерфейс y уже не является nil, хотя x все еще nil.
var x *int
var y any
y = x
📌 Что вернет y == nil?
Вернет false. Это потому, что интерфейс не просто представляет значение, которое ему присвоено, а действует как контейнер для этого значения.
Для проверки, является ли значение в интерфейсе nil, нужно использовать утверждение типа. Например, для проверки y на nil, используем:
y.(*int) == nil
Это показывает, что интерфейс y не nil, но содержащееся в нем значение — nil. Полный пример здесь.
#tip