深入理解Golang中的Options模式
package main
import (
"fmt"
)
// Option定义了一个函数类型,这个函数用于设置某个对象的属性
type Option func(*MyObject)
// MyObject是我们想要设置属性的对象
type MyObject struct {
attribute string
}
// WithAttribute是一个Option,用于设置MyObject的attribute属性
func WithAttribute(value string) Option {
return func(m *MyObject) {
m.attribute = value
}
}
// NewMyObject使用一系列Option来构造一个配置好的MyObject实例
func NewMyObject(opts ...Option) *MyObject {
myObj := &MyObject{}
for _, opt := range opts {
opt(myObj)
}
return myObj
}
func main() {
// 使用WithAttribute选项创建一个MyObject实例
myObj := NewMyObject(WithAttribute("someValue"))
// 输出对象的attribute属性,验证它已被设置
fmt.Printf("Attribute: %v\n", myObj.attribute)
}
这段代码定义了一个Option
类型的函数,用于设置MyObject
对象的属性。WithAttribute
函数是一个具体的Option
,用于设置对象的attribute
属性。NewMyObject
函数接受一系列Option
作为参数,并用它们配置新创建的MyObject
实例。在main
函数中,我们创建了一个MyObject
实例,并验证了attribute
属性已经根据Option
被正确设置。这是Golang中Options模式的一个简单示例。
评论已关闭