美文网首页
手把手教媳妇可变参数的应用场景

手把手教媳妇可变参数的应用场景

作者: 牛空空 | 来源:发表于2020-12-10 20:47 被阅读0次

直观的常用的初始化一个结构体的方式大概是这样

func NewClient(url string,port int,password string,db int){
  return &Client{
        url:      url,
        port:     port,
        password: password,
        db:       db,
      //....
  }
}

如果后续加入了新的参数,那么这个api又得修改,而且不能很好的使用默认参数,如果是自己使用问题不太明显,如果是A写出来的提供给B调用,就得重新修改打包,这样不利于代码的升级和迭代,通过阅读一些其它的源码grpc-go也好,学到一种易于扩展的选项装配方式,下面列出来


type Client struct {
    url string
    port int
    password string
    db int
}

type option func(client *Client)

func WithUrl(url string) option {

    return func(client *Client) {

        client.url = url
    }
}

func WithPort(port int) option {

    return func(client *Client) {

        client.port = port
    }
}

func WithPassword(pwd string) option {

    return func(client *Client) {

        client.password = pwd
    }
}


func NewClinet(ops...option) *Client {

    c := &Client{
        url:      "localhost",
        port:     3306,
        password: "",
        db:       0,
    }
    for _,op := range ops{
        op(c)
    }
    return c
}

第二种方法,可以根据需要传递适合的参数个数,不传还能使用默认参数,更方便以后的扩展

相关文章

  • 手把手教媳妇可变参数的应用场景

    直观的常用的初始化一个结构体的方式大概是这样 如果后续加入了新的参数,那么这个api又得修改,而且不能很好的使用默...

  • 手把手教媳妇jaeger简单场景

    分布式服务中,通过日志查看错误以及追踪问题,是一件非常痛苦的事情,由此我们可以使用链路追踪来快速定位问题,查看服务...

  • 参数

    可变参数 Java声明函数是可通过int ... num 等方式声明可变长度的参数,用于传输参数个数不固定的场景,...

  • day13 函数嵌套 定义 作用域 名称空间 * 与 ** 应用

    Ⅰ 函数的可变长参数 在形参中*与**的应用 * 站在实参的角度:可变长指的是参数的个数不固定,如果参数的...

  • JS高阶函数的小技巧

    1.函数的可变参数写法场景(响应式) 现在我们有一个应用场景,假如老师让我们做数学计算。 老师让我们首先计算1+2...

  • 可变参数

    C语言的可变参数的实现非常巧妙:大师只用了 3 个宏就解决了这个难题。 一、可变参数的应用 这里实现一个简单的可变...

  • 元组、字典可变参数

    可变参数 需求: 参数数量不确定,能否接收? args元组可变参数 kwargs字典可变参数 传递可变参数

  • iOS可变参数方法定义

    前言 在OC和Swift都是允许使用可变参数方法的,虽然可变参数方法在很大程度上违反了编码规范,但是在一些特定场景...

  • ★10.关于可变参数模板

    可变参数函数模板 可变参数类模板 可变参数函数模板的使用 转发参数包

  • day13-函数(2)

    *与**在形参与实参中的应用 一:可变长参数 可变长指的是参数的个数不固定。站在实参的角度,实参是用来为形参赋值的...

网友评论

      本文标题:手把手教媳妇可变参数的应用场景

      本文链接:https://www.haomeiwen.com/subject/mmgrgktx.html