メソッドは関数と似ていますが、メソッドにはレシーバを指定する必要があります。
レシーバ
レシーバはメソッドと紐づける為に指定する型です。
func (レシーバ) メソッド名() 戻り値 {}
メソッドの例
構造体(myStruct)をレシーバに指定する事で、introduction メソッドは myStruct 専用のメソッドになります。
レシーバは、「レシーバ名 型」の順で指定し、レシーバ名は一文字で表す事が恒例のようです。
package main
import (
"fmt"
)
// 構造体定義
type myStruct struct {
name string
}
// メソット定義
func (m myStruct) introduction() string {
return fmt.Sprintf("名前は %s です。", m.name)
}
func main() {
m := myStruct{}
m.name = "sample_name"
fmt.Println(m.introduction()) // 名前は sample_name です。 が表示される。
}