Working with Go
Object Oriented Programming
Go does not have objects and classes, so is not a true object oriented programming. However, you can add methods to types. This gives you most of the same ability without the added complexity of full OOP.
A method is a function with a receiver defined first. Using the Dog
type from the structs example.
package main
import "fmt"
type Dog struct {
Name string
Color string
}
func (d Dog) Call() {
fmt.Printf("Here comes a %s dog, %s.\n", d.Color, d.Name)
}
func main() {
// create instance of dog
Spot := Dog{Name: "Spot", Color: "brown"}
// call object method
Spot.Call()
}
Limitations
You can define methods on custom types, but are limited to types that are defined in the same package as the method. So you cannot define a method on built-in types, you would first need to extend.
package main
import "fmt"
type MyInt int
func (i MyInt) Double() MyInt {
return i * 2
}
func main() {
x := MyInt(3)
fmt.Println(x.Double())
}