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}
  • 相关阅读:
    内联函数(inline function)
    被extern "C" 修饰后按照C语言编译
    函数重载-name mangling或mame decoration技术-看看反汇编
    cin、cout
    下载visual studio 环境搭建
    配置共享文件夹
    EFS加密文件系统
    十二、字符串(1)
    十五、文件
    十一、指针
  • 原文地址:https://www.cnblogs.com/sunlong88/p/13574121.html
Copyright © 2011-2022 走看看