Goで構造体で関数を渡すとうれしいか
asRagi.iconうれしくなかった
code:.go
// A: 状態は関数をクロージャにすることで実現する(Bad)
type User struct {
UpdateUserName func(UserName) error
}
func NewUser() *User {
var userName UserName
return &User{
UpdateUserName: func(newUserName UserName) error {
userName = newUserName
}
}
}
// B: 素直に状態は構造体に明示的に持ってメソッドを生やす(Better)
type User struct {
name UserName
}
func (u *User) UpdateUserName(newUserName UserName) error {
u.name = newUserName
}
func NewUser() *User {
return &User{}
}
メリット
よくないポイント
単に見にくい