zoukankan      html  css  js  c++  java
  • golang设计模式之选项模式

    type Options struct {
    StrOption1 string
    StrOption2 string
    StrOption3 string
    IntOption1 int
    IntOption2 int
    IntOption3 int
    }



    type Option func(opts *Options)
    func InitOption3(opts ...Option) {
        options := &Options{}
        for _, opt := range opts {
            opt(options)
        }
    
        fmt.Printf("init options3:%#v
    ", options)
    }
    func WithStringOption1(str string) Option {
        return func(opts *Options) {
            opts.StrOption1 = str
        }
    }
    
    func WithStringOption2(str string) Option {
        return func(opts *Options) {
            opts.StrOption2 = str
        }
    }
    
    func WithStringOption3(str string) Option {
        return func(opts *Options) {
            opts.StrOption3 = str
        }
    }
    
    func WithIntOption1(val int) Option {
        return func(opts *Options) {
            opts.IntOption1 = val
        }
    }
    
    func WithIntOption2(val int) Option {
        return func(opts *Options) {
            opts.IntOption2 = val
        }
    }
    
    func WithIntOption3(val int) Option {
        return func(opts *Options) {
            opts.IntOption3 = val
        }
    }
    func main() {
        InitOption3(
            WithStringOption1("str1"),
            WithStringOption3("str3"),
            WithIntOption3(3),
            WithIntOption2(2),
            WithIntOption1(1),
            WithStringOption2("str2"),
        )
    }

    执行:

    init options3:&main.Options{StrOption1:"str1", StrOption2:"str2", StrOption3:"str3", IntOption1:1, IntOption2:2, IntOption3:3}
  • 相关阅读:
    常用的文件查看命令
    Linux常用快捷按键
    寒冬储粮
    创建型模式:抽象工厂
    创建型模式:工厂方法
    创建型模式:单例模式
    开闭原则
    迪米特法则
    接口隔离原则
    依赖倒置原则
  • 原文地址:https://www.cnblogs.com/sunlong88/p/13574121.html
Copyright © 2011-2022 走看看