構造体のメソッドを定義する方法
構造体のメソッドはざっくり以下の書式で定義することができます。
func (構造体のレシーバ 構造体) メソッド名() {
//処理
}
これだけだと何のことかわからないと思うので、具体的にコードを書いてみましょう。
package main
import "fmt"
type User struct {
firstName string
lastName string
}
func (u *User) GetUserFullName() string {
return u.lastName + " " + u.firstName //"姓 名"を返す処理
}
func main() {
user := User{firstName: "孝司", lastName: "田中"}
userFullName := user.GetUserFullName()
fmt.Println(userFullName) //田中 孝司
}
コードの解説
この部分でUser型の構造体を宣言し、User型にfirstNameとlastNameのフィールドを持たせます。
type User struct {
firstName string
lastName string
}
そして以下の部分でUser型のメソッドであるGetUserFullNameを定義してます。メソッドの説明としては、User型のfirstNameとlastNameを連結してフルネームを返すだけです。
func (u *User) GetUserFullName() string {
return u.lastName + " " + u.firstName
}
main関数の中では、firstNameが「孝司」lastNameが「田中」のuserを定義し、そのユーザーのフルネームを出力してます。
user := User{firstName: "孝司", lastName: "田中"}
userFullName := user.GetUserFullName()
fmt.Println(userFullName)