in Go, types (including structs) can have free associated functions that can be invoked with dot notation, which require a special separate parameter in the function signature
instead of `this` or `self`, the convention in Go is to use some sort of shortening of the type name itself (continued)