Object Oriented Programming in Go

Go is a post-OOP language.

Go does not have classes, but it has types and methods.

Go does not have constructors, but it has init() functions.

Go does not have inheritance, but it has composition.

Go achieves polymorphism with the help of interfaces and composition.

Go supports encapsulation.

Go supports abstraction with the help of interfaces and structs. Packages in Go are also a form of abstraction.