码迷,mamicode.com
首页 > 其他好文 > 详细

golang 服务或结构体可选参数的赋值

时间:2019-09-21 20:47:34      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:news   赋值   新建   turn   int   serve   UNC   pre   server   

// 服务结构体
type Server struct {
    opts options //可选参数变量
    addr string
}

//可选参数列表
type options struct {
    A int
    B string
    C bool
    D int
}

// 为可选参数赋值的函数
type ServerOption func(*options)

func Afunc(a int) ServerOption {
    return func(o *options) {
        o.A = a
    }
}
func Bfunc(b string) ServerOption {
    return func(o *options) {
        o.B = b
    }
}
func Cfunc(c bool) ServerOption {
    return func(o *options) {
        o.C = c
    }
}

//新建服务
func NewServer(addr string, opt ....ServerOption) *Server {
    var opts options
    for _, o := opt {
        o(&options)
    }
    
    return &Server{
        opts: opts,
        addr: addr,
    }
}
// 实例说明
server := NewServer("aaaa", Afunc(1), Cfunc(true))

 

golang 服务或结构体可选参数的赋值

标签:news   赋值   新建   turn   int   serve   UNC   pre   server   

原文地址:https://www.cnblogs.com/share-ideas/p/11564310.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!