首页 > 其他分享 >用with的方式实现可变参

用with的方式实现可变参

时间:2023-02-28 11:25:43浏览次数:28  
标签:opt option 方式 实现 age sex int func 可变

先上代码:

package main

import "fmt"

// Option custom setup config
type Option func(*option)

// option 参数配置项
type option struct {
    sex int
    age int
}

// NewFriend 寻找志同道合的朋友
func NewFriend(hobby string, opts ...Option) (string, error) {
    opt := new(option)
    for _, f := range opts {
        f(opt)
    }

    fmt.Println(opt.sex, "is sex")
    fmt.Println(opt.age, "is age")
    fmt.Println(hobby)
    return hobby, nil
}

// WithSex sex 1=female 2=male
func WithSex(sex int) Option {
    return func(opt *option) {
        opt.sex = sex
    }
}

// WithAge age
func WithAge(age int) Option {
    return func(opt *option) {
        opt.age = age
    }
}

func name() {
    friends, err := NewFriend("看书", WithAge(30), WithSex(1))

    if err != nil {
        fmt.Println(err)
    } else {
        fmt.Println(friends)
    }
}

还有2种方式

    接口模式

// Sex 性别
type Sex int

// Age 年龄
type Age int

// NewFriend 寻找志同道合的朋友
func NewFriend(hobby string, args ...interface{}) (string, error) {
 return "", nil
}

   结构体

// option 参数配置项
type option struct {
    sex int
    age int
}

// NewFriend 寻找志同道合的朋友
func NewFriend(hobby string,opt option) (string, error) {
 return "", nil
}

 

标签:opt,option,方式,实现,age,sex,int,func,可变
From: https://www.cnblogs.com/mingkewang/p/17163309.html

相关文章

  • oracle锁表,java代码修改方式如下
    selectb.owner,b.object_name,a.session_id,a.locked_modefromv$locked_objecta,dba_objectsbwhereb.object_id=a.object_id;selectb.username,b.sid,b.serial#,l......
  • redis实现用户查询次数限制
    随着项目的开发越来越完善,产品也会提出各种层出不穷的需求,当一个复杂列表查询功能实现时,需求又说要增加用户的查询次数限制,这就让开发很是头疼,但是为了RMB也就忍忍了!......
  • 基于QT实现的影院票务系统[2023-02-28]
    基于QT实现的影院票务系统[2023-02-28]基于QT实现的影院票务系统影院票务系统1.系统权限管理系统分3种用户权限:A游客权限-注册会员,查看电影场次信息,购买电影票B会......
  • java调用c++的几种方式
    jni类似c#调用c++的方式,定义java端的c++代码接口。packagecrayon.jni;publicclassJNITest{publicnativestaticvoidset(inti);publicna......
  • 深度理解Redux原理并实现一个redux
    Redux的作用是什么Redux的作用在于实现状态传递、状态管理。在这里你可能会说了,如果是状态传递,那我props的传递不也是可以达到这样的效果吗?context上下文方案不也是可以达......
  • 转载:pageOffice插件 springboot实现服务器上Word文档在线打开编辑保存
    pageOffice插件springboot实现服务器上Word文档在线打开编辑保存需求:在oa系统上,想实现在线,服务器上doc,docx文档,在web打开,编辑。编辑后,可以再同步保存到服务器端。......
  • python 如何实现多线程
    今天本来打算学习学习多进程的,但是由于我现在的电脑没有Linux系统,无法通过Linux系统编辑一些多进程的程序,因此我打算从多线程入手。多线程我们的程序一般都是多任务的,如......
  • golang对接企业微信群机器人-在线客服系统新消息提醒方式之一【唯一客服】
    最近客服系统对接了一下企业微信的机器人企业成员(内部)群机器人只能在企业微信内部群里添加,设置好机器人头像名称之后会得到一个webhook,创建者可使用此wenhook去调用相关a......
  • Ingress-nginx+内部LB(nginx)实现业务负载均衡
    注:本文使用k8s社区版ingress-nginx实现,涉及知识点:pod、pv、pvc、deployment、service、ingress、ingress-controller、nginx(loadbalance)一.ingress介绍1.ingress-ngin......
  • Java实现简单薪水计算器相关操作代码
    /***薪水计算器*1.通过键盘输入用户的月薪,每年是几个薪水*2.输出用户年薪*3.输出一行字“如果年薪超过10万,恭喜你超越了90%的国人;如果年薪超过了20万,恭喜你超越了......