博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
golang构造函数
阅读量:4959 次
发布时间:2019-06-12

本文共 1868 字,大约阅读时间需要 6 分钟。

构造函数

type Person {    name string,    age    int64,    country string,    ...}func NewPerson(name string,age int64,country sting)*Person{      return &Person{ name: name,}
package mainimport (    "fmt")type options struct {    a int64    b string    c map[int]string}func NewOption(opt ...ServerOption) *options {    r := new(options)    for _, o := range opt {        o(r)    }    return r}type ServerOption func(*options)func WriteA(s int64) ServerOption {    return func(o *options) {        o.a = s    }}func WriteB(s string) ServerOption {    return func(o *options) {        o.b = s    }}func WriteC(s map[int]string) ServerOption {    return func(o *options) {        o.c = s    }}func main() {    opt1 := WriteA(int64(1))    opt2 := WriteB("test")    opt3 := WriteC(make(map[int]string,0))    op := NewOption(opt1, opt2, opt3)    fmt.Println(op.a, op.b, op.c)}
func NewServer(addr string, options ...func(*Server)) (*Server, error) {    srv := &Server{    Addr: addr, }    for _, option := range options {       option(srv)    }    return srv} func timeout(d time.Duration) func(*Server) {    return func(srv *Server) {        srv.timeout = d    }} func tls(c *config) func(*Server) {    return func(srv *Server) {        Tls := loadConfig(c)        srv.tls = Tls    }} //使用src, err = NewServer("localhost:8080", timeout(1), tls(path/to/cert))

类工厂模式

// 存放 
对应关系var mux map[string]func(option *Option) error // 注册handlerfunc register(key string, f func(option *Option) error) { if mux == nil { mux = make(map[string]func(option *Option) error) } if _, exist := mux[key]; exist { return errors.New("handler exist") } mux[key] = f} // factoryfunc factory(option *Option) error { return mux[option.Key](option)}
posted on
2018-09-13 10:39 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/liujitao79/p/9639100.html

你可能感兴趣的文章
2016-2017-2点集拓扑作业[本科生上课时]讲解视频
查看>>
【译】Hello Kubernetes快速交互实验手册
查看>>
appium(13)- server config
查看>>
图形学噪声解析
查看>>
IIS负载均衡-Application Request Route详解第六篇:使用失败请求跟踪规则来诊断ARR...
查看>>
管理信息系统 第三部分 作业
查看>>
[Leetcode Week13]Search a 2D Matrix
查看>>
通过被调函数改变主调函数的值
查看>>
java 对象的序列化与反序列化
查看>>
二叉树、树、森林
查看>>
查看端口占用cmd命令
查看>>
2019.01.17王苛震作业
查看>>
Halcon学习(八)文本操作
查看>>
MFC电子词典
查看>>
简单工厂(Simple Factory)
查看>>
04: 打开tornado源码剖析处理过程
查看>>
02: 安装epel 解决centos7无法使用yum安装nginx
查看>>
清除浮动
查看>>
PayPal(贝宝)支付接口、文档、IPN
查看>>
站立会议总结07
查看>>