Go Language Object Oriented Programming: Difference between revisions
Line 14: | Line 14: | ||
=Methods= | =Methods= | ||
Functions can be associated with a type, turning them into methods of that type, by declaring a receiver type on the function. | |||
Methods can only be associated with receiver types that are defined in the same package as the method. That is why a programmer cannot add new methods to built-in types. | Methods can only be associated with receiver types that are defined in the same package as the method. That is why a programmer cannot add new methods to built-in types. |
Revision as of 15:34, 29 August 2023
External
Internal
Overview
Go is an object oriented language, but the object orientation programming model is relatively simple, compared with other object oriented languages. It has been said about Go that is "weakly" object-oriented. Go does not use the term "class". There is no class
keyword in Go. However, Go allows associating data with methods, which what a class in other programming languages really is.
Go uses struct
instead, which is the encapsulation of data and methods, so the struct
ends being equivalent to a class. To associate data with methods, we use Go functions and we give the a receiver type, which is the type that function - now becoming a method - is associated with. When calling a method on an instance of the receiver type, the standard dot notation is used.
Go does not have inheritance, constructors or generics. Inheritance can be replaced to a certain extent by composition, embedding and interface, which support code reuse and polymorphism.
Methods
Functions can be associated with a type, turning them into methods of that type, by declaring a receiver type on the function.
Methods can only be associated with receiver types that are defined in the same package as the method. That is why a programmer cannot add new methods to built-in types.