関数とメソッドの違い
【開発環境】
OS:Win11(64ビット)
go version go1.19.4 windows/amd64
VSCode1.72.2、及びコマンドプロンプト
◆関数
サンプルファイル「main.go」
//構造体
type Square struct {
X, Y int
}
//関数
func Area(s Square) int {
return s.X * s.Y
}
//メイン
func main() {
s := Square{5, 5}
fmt.Println(Area(s)) // >>25
}
◆メソッド
メソッドとは、関数に値を結びつけたものを言う
サンプルファイル「main.go」
//構造体
type Square struct {
同じコード
}
//メソッド
// sはレシーバ(構造体型変数)
//メソッドArea()に引数を書いてはいけない!
func (s *Square) Area() int {
return s.X * s.Y
}
//
func main() {
s := Square{5, 5}
//メソッドで
fmt.Println(s.Area()) // >>25
}
・Area(s Square)の部分が↑の型に紐づくを実装している部分
・こうすることでAreaは構造体:Squareの持ち物となり、s.Area()として呼び出すことができる。これがメソッド。
・この紐づけた構造体(型)のことをレシーバ(receiver)と呼ぶらしい