美文网首页
golang实现默认参数的方式

golang实现默认参数的方式

作者: darcyaf | 来源:发表于2022-05-07 03:59 被阅读0次

golang实现默认参数的方式

package main

import (
    "fmt"
    "time"
)

func main() {
    options := []reqOption{
        setTimeoutOption(time.Second),
        setHttpsOption(true),
    }
    doReq("123", 123, options...)
}

type reqParam struct {
    ip      string
    port    int32
    timeout time.Duration
    https   bool
}

func setTimeoutOption(t time.Duration) reqOption {
    return func(param *reqParam) {
        param.timeout = t
    }
}

func setHttpsOption(useHttps bool) reqOption {
    return func(param *reqParam) {
        param.https = useHttps
    }
}

type reqOption func(param *reqParam)

func doReq(ip string, port int32, options ...reqOption) {
    var rp = reqParam{
        ip:      ip,
        port:    port,
        timeout: 0,
        https:   true,
    }
    for _, o := range options {
        o(&rp)
    }
    fmt.Println(rp.timeout)
}

相关文章

网友评论

      本文标题:golang实现默认参数的方式

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