首页 > 其他分享 >go options 模式

go options 模式

时间:2023-03-01 10:38:00浏览次数:33  
标签:return string 模式 User func go options Option

...

函数式选项模式的使用场景有哪些呢:我们一般用来配置一些基础的服务配置,比如MySQL,Redis,Kafka的配置,很多可选参数,可以方便动态灵活的配置想要配置的参数。

https://zhuanlan.zhihu.com/p/436468481

type Option func(*User)

func WithAge(age int) Option {
    return func(u *User) {
        u.Age = age
    }
}

func WithEmail(email string) Option {
    return func(u *User) {
        u.Email = email
    }
}

func WithPhone(phone string) Option {
    return func(u *User) {
        u.Phone = phone
    }
}

func WithGender(gender string) Option {
    return func(u *User) {
        u.Gender = gender
    }
}

func NewUser(id string, name string, options ...func(*User)) (*User, error) {
    user := User{
        ID:     id,
        Name:   name,
        Age:    0,
        Email:  "",
        Phone:  "",
        Gender: "female",
    }
    for _, option := range options {
        option(&user)
    }
    //...
    return &user, nil
}

user1, err := NewUser("1", "ada")
user2, err := NewUser("2", "bob", WithPhone("123456"), WithGender("male"))

 

标签:return,string,模式,User,func,go,options,Option
From: https://www.cnblogs.com/eiguleo/p/17167162.html

相关文章

  • go 语言 写法
    为了很久之后能快速回顾GO的写法特意记录一下1:go可以隐式声明  :=  (可以不跟类型) 类似   var变量名变量类型  变量名:=变量值(声明时go会自动判断......
  • 20-责任链模式
    20-责任链模式概念责任链模式(ChainofResponsibility):使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连城一条链,并沿着这条链传......
  • 嵌入式ARM端测试手册——全志T3+Logos FPGA开发板(上)
    前言本指导文档适用开发环境:Windows开发环境:Windows764bit、Windows1064bitLinux开发环境:Ubuntu18.04.464bit虚拟机:VMware15.5.5进行本文档操作前,请先按照调试......
  • 全志T3+FPGA国产核心板——Pango Design Suite的FPGA程序加载固化
    本文主要基于紫光同创PangoDesignSuite(PDS)开发软件,演示FPGA程序的加载、固化,以及程序编译等方法。适用的开发环境为Windows7/1064bit。测试板卡为全志T3+LogosFPGA......
  • 设计模式&业务场景
    目录单例工厂观察者模板方法责任链策略单例工厂观察者模板方法责任链策略......
  • 嵌入式ARM端测试手册——全志T3+Logos FPGA评估板(下)
    前言本指导文档适用开发环境:Windows开发环境:Windows764bit、Windows1064bitLinux开发环境:Ubuntu18.04.464bit虚拟机:VMware15.5.5进行本文档操作前,请先按照调试......
  • Golang make和new的区别及实现原理详解
    在Go语言中,有两个比较雷同的内置函数,分别是new和make方法,二者都可以用来分配内存,那他们有什么区别呢?下面我们就从底层来分析一下二者的不同。感兴趣的小伙伴们可以参考......
  • FPGA案例开发手册——基于全志T3+Logos FPGA核心板
    前言本文档主要提供评估板FPGA端案例测试方法,适用的开发环境为Windows764bit和Windows1064bit。本文案例基于创龙科技的全志T3+LogosFPGA核心板,它是一款基于全志科......
  • [go]封装go的docker镜像
    前言多阶段封装docker镜像,使用scratch镜像,尽量减小镜像包的体积。封装用于编译的go镜像DockerfileFROMgolang:1.20.1ASbuilderWORKDIR/appsCOPY./apps/ENVCG......
  • (转)GoLang之标准库strings包
    原文:https://blog.csdn.net/weixin_52690231/article/details/123593614?ops_request_misc=&request_id=&biz_id=102&utm_term=golang%20strings%20%E5%8C%85%20%E8%AF%A6%......