Если вы посмотрите на File
STRUCT имеет функцию Read()
и Write()
, которое точно так же, как и io.Writer
io.Reader
интерфейс Read()
и Write()
функций. Но пакет io
нет, где можно найти в пакете File
(не импортируется). Означает ли это, что интерфейсы вообще не должны импортироваться для использования? До тех пор, пока определение Read()
совпадает с интерфейсом, можно сказать, что оно является частью интерфейса io.Writer
или io.Reader
?Интерфейсы Golang не нужно импортировать?
ответ
Пакет os
не импортировать пакет io
как интерфейс io.Reader
не используется в пакете os
.
Тип *File
имеет значение io.Reader
, так как у него есть метод Read
с правильной подписью. Это реализует отношение неявное и не нужно и не нужно это делать explicite (например, как на Java с implements ISomeThing
).
Вы спросили: «Означает ли это, что интерфейсы вообще не должны импортироваться для использования?» и формальный ответ: Конечно не! Если вы хотите использовать io.Reader
, вы должны import "io"
.
Но реализация/удовлетворение интерфейса не Использование этого интерфейса: Любой тип реализует любой интерфейс (даже будущие, которые не были изобретены), просто используя правильные методы.
экспортируемые объекты являются константы, переменные и типы. Использовать их, т.е. чтобы ссылаться на такие экспортируемые объекты, нужно использовать их [квалифицированное] имя, а квалификатор - это базовое имя пакета, который их экспортирует. Это также подразумевает использование инструкции импорта такого пакета. IOW, привязка экспортируемых объектов в области файла [строго] явно. Нет import == нет доступа к экспортированным материалам.
Ото, реализации интерфейса является specifiedбыть неявным:
Тип реализует любой интерфейс, включающий любое подмножество его методов и, следовательно, может реализовывать несколько различных интерфейсов. Например, все виды реализации пустой интерфейс:
interface{}
- 1. Golang inferred интерфейсы
- 2. интерфейсы реализации в golang
- 3. Golang интерфейсы и литье
- 4. Интерфейсы Golang для упрощения зависимостей?
- 5. Циклические зависимости и интерфейсы в Golang
- 6. Интерфейсы и приемники Golang - необходимые консультации
- 7. Golang: Передача каналов через пустые интерфейсы
- 8. Как правильно импортировать Golang appengine?
- 9. Golang: Защитные интерфейсы для нулевых типов
- 10. Как пройти интерфейсы косвенно в golang
- 11. Как импортировать собственный пакет golang?
- 12. Интерфейсы для границ микросервисов - как импортировать код?
- 13. Почему мне не нужно импортировать sys?
- 14. Golang как импортировать локальные пакеты без гопата?
- 15. Есть ли способ импортировать позже в golang?
- 16. Когда мне нужно импортировать java.awt. *? Если я хочу импортировать javax.swing. * Мне нужно также импортировать java.awt. *?
- 17. Нужно ли изучать все API-интерфейсы?
- 18. Зачем мне нужно импортировать ldap.modlist?
- 19. Golang: интерфейсы хранятся как значения; Методы, неспособные обновить поля структуры
- 20. golang - интерфейсы имеют одинаковые методы, но считаются разными
- 21. Golang Импорт (не определенно: Запрос)
- 22. Нужно уточнить динамические типы в golang
- 23. Интерфейсы: GraphicImage не обновляется
- 24. Как объявить и импортировать интерфейсы типов в отдельном файле
- 25. Импортировать все функции и интерфейсы из Types определения
- 26. Что нужно импортировать, чтобы использовать CharSet.Unicode?
- 27. Как быстро узнать, какие файлы нужно импортировать?
- 28. Golang отражает пакет «не тип»
- 29. Когда вам нужно импортировать в PHP?
- 30. не полностью реализованы интерфейсы