Goの構造体にはメソッドが定義できます。関数にレシーバーを書きます。
package main
import (
fmt "fmt"
strconv "strconv"
)
type Moke struct {
Name string
Level int
}
// entry point
func main() {
moke := Moke{"moke", 1}
fmt.Printf(moke.Dump())
}
func (m *Moke) Dump() string {
return m.Name + " Level " + strconv.Itoa(m.Level)
}
func (レシーバー変数の名前 レシーバーの型) メソッド名(引数) 戻り値の型 と書きます。レシーバー変数の名前をthisやselfにすると、見たことある言語と同じになりますよね。
呼び出す時はメンバーへのアクセスと同様に.メソッド名()で呼べます。
Goのメソッドは、ただの関数といえば関数なので、JavaやC#のように、1つのファイルにメソッドを詰め込む必要は無いです。