Go 参数配置默认值设计架构

package server

//定义选项结构
type Options struct {
    UserName string
    Password string
    Host string
    Port int16
}

type Option func(*Options)

type Server struct {
    Options Options
    //other
}

func NewServer(options ...Option) *Server{
    s:= &Server{Options:Options{
        UserName: "root",
        Password: "1234",
        Host:     "localhost",
        Port:     8000,
    }}
    
    for _,v := range options{
        v(&s.Options)
    }
    
    //other
    
    return s
}

func UserName(name string) Option{
    return func(o *Options) {
        o.UserName = name
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。