Прежде, чем перейти к примерам, давайте дадим определение полиморфизму.
"Существование чего-либо в различных формах"
В программировании также бывают такие ситуации, когда поведение одинаково в разных контекстах. По-хорошему такое поведение должно называться одинаково. Именно здесь полиморфизм проявляется в контексте программирования. С точки зрения программирования возможны два типа полиморфизма:
- Полиморфизм во время компиляции (Compile Time Polymorphism) - в этом случае
компилятор знает какие именно функции будут выполняться для конкретного
вызова. Примером полиморфизма во время компиляции являются:
- перегрузка функции — одно и то же имя функции с разными аргументами
- перегрузка операторов
- Полиморфизм во время выполнения (Run Time Polymorphism) - в этом случае функция, которая должна быть вызвана, определяется во время выполнения.
Давайте рассмотрим какие типы полиморфизма во времени компиляции и выполнения возможны в Go.
Если вы прочитали две вышеупомянутые статьи, то поняли, что полиморфизм во время компиляции в GoLang невозможен. Доступен только полиморфизм времени выполнения. Полиморфизм во времени выполнения достигается в Go с помощью интерфейсов.