История изменений
Исправление lbvf50txt, (текущая версия) :
Здравствуйте.
Интерфейсы это переходники которые соединяют компоненты системы. Конкретно в Go они описывают набор методов которым должна соответствовать структура.
В Go есть правило хорошего тона: функция принимает как аргументы интерфейсы, а возвращает объект конкретного типа. Интерфейсы широко используются в стандартной библиотеке Golgan. Таким образом библиотечные функции могут принимать через «переходник» объекты разных типов. Объектами я называю структуры - так привычней.
Например обработка HTTP запроса в пакете net/http происходит через экземпляр интерфейса Handler. Т.е. любого объекта который соответствует требованиям интерфейса Handler. И этот объект вы отдаете «марушрутизатору» который запускает его и этот экземпляр формирует ответ.
Сам объект формирует ответ через вызов метода SeveHTTP - который опять принимает два аргумента описанных интерфейсами Response и Request. В Response - пишется ответ через интерфейс Writer.
Видите, все взаимодействие в Go описывается не конкретными типами, а интерфейсами, т.е. можно передавать разные объекты, главное чтоб они выполняли требование интерфейса.
Интерфейсы - это концепция не для новичков. Надо набить опыт процедурного программирования иначе это достаточно бесполезно объяснять, все равно что рассказывать про комплексные числа ученику 3го класса школы.
У меня есть обобщающая статья «Интерфейсы в ООП».
Это вывод из прочтения двух книг:
- POODR от Sandi Metz. Необхоима для понятия концепта.
- «Learning Go» от Jon Bodner. Необходима для понятия реалзиации.
Рекомендую сначала прочитать книги. Иначе не будет базиса для восприятия этого концепта.
Исправление lbvf50txt, :
Здравствуйте.
Интерфейсы это переходники которые соединяют компоненты системы. Конкретно в Go они описывают набор методов которым должна соответствовать структура.
В Go есть правила, функция принимает как аргументы интерфейсы, а возвращает объект конкретного типа. Интерфейсы широко используются в стандартной библиотеке Golgan. Таким образом библиотечные функции могут принимать через «переходник» объекты разных типов. Объектами я называю структуры - так привычней.
Например обработка HTTP запроса в пакете net/http происходит через экземпляр интерфейса Handler. Т.е. любого объекта который соответствует требованиям интерфейса Handler. И этот объект вы отдаете «марушрутизатору» который запускает его и этот экземпляр формирует ответ.
Сам объект формирует ответ через вызов метода SeveHTTP - который опять принимает два аргумента описанных интерфейсами Response и Request. В Response - пишется ответ через интерфейс Writer.
Видите, все взаимодействие в Go описывается не конкретными типами, а интерфейсами, т.е. можно передавать разные объекты, главное чтоб они выполняли требование интерфейса.
Интерфейсы - это концепция не для новичков. Надо набить опыт процедурного программирования иначе это достаточно бесполезно объяснять, все равно что рассказывать про комплексные числа ученику 3го класса школы.
У меня есть обобщающая статья «Интерфейсы в ООП».
Это вывод из прочтения двух книг:
- POODR от Sandi Metz. Необхоима для понятия концепта.
- «Learning Go» от Jon Bodner. Необходима для понятия реалзиации.
Рекомендую сначала прочитать книги. Иначе не будет базиса для восприятия этого концепта.
Исходная версия lbvf50txt, :
Здравствуйте.
Интерфейсы это переходники которые соединяют компоненты системы. Конкретно в Go они описывают набор методов которым должна соответствовать структура.
В Go есть правила, функция принимает как аргументы интерфейсы, а возвращает объект конкретного типа. Интерфейсы широко используются в стандартной библиотеке Golgan. Таким образом библиотечные функции могут принимать через «переходник» объекты разных типов. Объектами я называю структуры - так привычней.
Например обработка HTTP запроса в пакете net/http происходит через экземпляр интерфейса Handler. Т.е. любого объекта который соответствует требованиям интерфейса Handler. И этот объект вы отдаете «марушрутизатору» который запускает его и этот экземпляр формирует ответ.
Сам объект формирует ответ через вызов метода SeveHTTP - который опять принимает два аргумента описанных интерфейсами Response и Request. В Response - пишется ответ через интерфейс Writer.
Видите, все взаимодействие в Go описывается не конкретными типами, а интерфейсами, т.е. можно передавать разные объекты, главное чтоб они выполняли требование интерфейса.
Интерфейсы это концепция не для новичков. Надо набить опыт процедурного программирования иначе это достаточно бесполезно объяснять, все равно что рассказывать про комплексные числа ученику 3го класса школы.
У меня есть обобщающая статья «Интерфейсы в ООП».
Это вывод из прочтения двух книг:
- POODR от Sandi Metz. Необхоима для понятия концепта.
- «Learning Go» от Jon Bodner. Необходима для понятия реалзиации.
Рекомендую сначала прочитать книги. Иначе не будет базиса для восприятия этого концепта.