Go: Methods explained
Any type declared in a type definition can have methods attached.
type MyType struct {
n int
}
func (p *MyType) Value() int { return p.n }
func main() {
pm := new(MyType)
fmt.Println(pm.Value()) // Output: 0
}
This declares a method Value
associated with MyType
. In this case, the receiver is named p
in the body of the function.
You may define methods on any type declared in a type definition. If you convert the value to a different type, the new value will have the methods of the new type, not those of the old type.
type MyInt int
func (m MyInt) Positive() bool { return m > 0 }
func main() {
var m MyInt = 2
m = m * m // The operators of the underlying type still apply.
fmt.Println(m.Positive()) // Output: true
fmt.Println(MyInt(-1).Positive()) // Output: false
var n int
n = int(m) // The conversion is required.
n = m // ILLEGAL
}
../main.go:14:4: cannot use m (type MyInt) as type int in assignment
Comments
Be the first to comment!