メソッド
レシーバ引数を伴う関数。
レシーバーは、構造体に関連付けられた関数(メソッド)を定義する。
これにより、構造体のインスタンスに対して操作を行うことができる。
package main
import (
"fmt"
"math"
)
type Vertex struct {
X, Y float64
}
func (v Vertex) Abs() float64 {
return math.Sqrt(v.X*v.X + v.Y*v.Y)
}
func main() {
v := Vertex{3, 4}
fmt.Println(v.Abs())
}
// 5
任意の型(type)にもメソッドを宣言できる。
package main
import (
"fmt"
"math"
)
type MyFloat float64
func (f MyFloat) Abs() float64 {
if f < 0 {
return float64(-f)
}
return float64(f)
}
func main() {
f := MyFloat(-math.Sqrt2)
fmt.Println(f.Abs())
}
// 1.4142135623730951