Любая реализация интерфейса должна быть взаимозаменяемой. Если функция принимает io.Reader, ей должно быть всё равно — это файл, буфер или HTTP body. В Go это естественно благодаря implicit interfaces — нет наследования, нет проблем с нарушением контракта.
Как применять Liskov substitution?
Middle
201 просмотровAFK Offer AI
Как хранить конфигурацию в Git?