Functional options
Go
などで用いられる
オブジェクト
の
コンストラクタ
や
ライブラリ
に
拡張性
をもたらす
デザインパターン
.
code:functional.go
func NewUser(options ...func(*User)) *User {
user := &User{}
for _, option := range options {
option(user)
}
return user
}
func main() {
user := NewUser(func(user *User) { user.UserId = "test-user" })
}