«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему я получаю «интерфейс без методов» при доступе к анонимной структуре в Go?

Почему я получаю «интерфейс без методов» при доступе к анонимной структуре в Go?

Опубликовано 22 ноября 2024 г.
Просматривать:749

Why do I get \

Понимание «интерфейса без методов» в Go

В вашем коде вы столкнулись с ошибкой «typeinterface {} — это интерфейс без методы» при попытке доступа к полю из анонимной структуры, переданной функции. Чтобы понять эту ошибку, важно понять концепцию интерфейсов в Go.

Интерфейс в Go — это тип, определяющий набор методов, которые должен реализовать конкретный тип. Однако в вашем случае используемый вами интерфейс представляет собой «пустой интерфейс», обозначенный интерфейсом {}. Пустой интерфейс не имеет никаких методов и может содержать значения любого типа, что делает его универсальным типом.

Доступ к полю анонимной структуры

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

Исправленный код

id := v.(struct{Id int}).Id

В этом исправленном коде мы вводим утверждение интерфейса v для структуры с полем Id. Это позволит нам получить доступ к полю Id, и программа будет работать как положено.

Помните, что утверждение типа следует использовать разумно, поскольку в случае сбоя утверждения типа оно может привести к ошибкам во время выполнения.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3