type Person struct { Name string Age int Gender int } type PersonFunc func(*Person) func WithName(name string) PersonFunc { return func(p *Person) { p.Name = name } } func WithAge(age int) PersonFunc { return func(p *Person) { p.Age = age } } func NewPerson(name string, opts ...PersonFunc) *Person { p := &Person{Name: name} for _, opt := range opts { opt(p) } return p } func main() { NewPerson("汪淼", WithAge(33)) }
好处:结构体增加新的字段不影响现有功能。文章来源:https://www.toymoban.com/news/detail-640325.html
Go设计模式之函数选项模式_Generalzy的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-640325.html
到了这里,关于Go functional options pattern的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!