golang-方法多参数传递

多参数处理

业务中根据传入的参数可控制返回的参数,此时接受函数句没必要一个一个接受参数,可以全部都复制给一个结构体,然后业务处理的时候根据不同业务进行不同处理即可

目录

.
├── demo1.go
├── demo2.go
├── go.mod
├── go.sum
├── moreArgs
│   ├── kv.go
│   └── op.go

demo2.go

package main

import "test/moreArgs"

func main(){
	NewKv := moreArgs.NewKv()
	NewKv.Put(moreArgs.WithLimit(int64(100)),moreArgs.WithGroup(true),moreArgs.WithOrder(true))
}

op.go

/**
 * @Author: zhangsan
 * @Description:
 * @File:  kv
 * @Version: 1.0.0
 * @Date: 2021/1/11 下午5:21
 */

package moreArgs

type Op struct {
	limit int64
	order bool
	group bool
	key string
	value string
}

type Options func (op *Op)

func WithLimit(limit int64) Options{
	return func(op *Op) {op.limit= limit}
}

func WithOrder(or bool) Options{
	return func(op *Op) {op.order= or}
}
func WithGroup(or bool) Options{
	return func(op *Op) {op.group= or}
}

//定义处理函数,返回的是新的ret
func OpPut(opts... Options) Op{
	ret := Op{key: "string key",value: "string value"}
	ret.applyOpts(opts)
	return ret

}
func (op *Op)applyOpts(opts []Options){
	for _,opt := range opts{
		opt(op)
	}
}

kv.go

/**
 * @Author: zhangsan
 * @Description:
 * @File:  kv
 * @Version: 1.0.0
 * @Date: 2021/1/11 下午5:21
 */

package moreArgs

import (
	"fmt"
	"time"
)

type kv struct {
	name string
}

type PutResp struct {
	name string
}

func NewKv() kv{
	return kv{name: "lisi"}
}

func (k *kv) Put(op... Options) PutResp{
	return  k.Do(op...)
}

//此用可用一个type 区分具体类型,然后分开处理
func (k *kv)Do(op... Options)PutResp{
	args := OpPut(op...)
	time.Sleep(100*time.Second)
	fmt.Println(args)
	fmt.Println("处理业务请求--返回resp")

	return PutResp{name: "zhangSan"}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

a...Z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值