Since the early 1990s, object-oriented programming (OOP) has been the dominant programming paradigm in industry and education, and nearly all widely used languages developed since then have included support for it. Go is no exception.
Although there is no universally accepted definition of object-oriented programming, for our purposes, an object is simply a value or variable that has methods, and a method is a function associated with a particular type. An object-oriented program is one that uses methods to express the properties and operations of each data structure so that clients need not access the object’s representation directly.
In earlier chapters, we have made regular use of methods from the
standard library, like the Seconds
method of type time.Duration
:
const day = 24 * time.Hour fmt.Println(day.Seconds()) // "86400"
and we defined a method of our own in Section 2.5, a
String
method for the Celsius
type:
func (c Celsius) String() string { return fmt.Sprintf("%g°C", c) }
In this chapter, the first of two on object-oriented programming, we’ll show how to define and use methods effectively. We’ll also cover two key principles of object-oriented programming, encapsulation and composition.