真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

golang函數(shù)參數(shù)默認(rèn)值-創(chuàng)新互聯(lián)

1,參考資料:Functional Options in Go: Implementing the Options Pattern in Golang

成都創(chuàng)新互聯(lián)專注于米脂企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城網(wǎng)站制作。米脂網(wǎng)站建設(shè)公司,為米脂等地區(qū)提供建站服務(wù)。全流程專業(yè)公司,專業(yè)設(shè)計,全程項目跟蹤,成都創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)

2,例子:求a,b,c的和

// go 函數(shù)參數(shù)沒有默認(rèn)值的語法,那我此時想給b添加默認(rèn)值該怎么辦?

func sum(a int, b int, c int) int {
    return a + b + c
}

// 還有很多方法可以做到,但是我還是喜歡這種

// 定義包含全部參數(shù)的 struct
type Params struct {
    a int
    b int
    c int
}

// 定義一個函數(shù)簽名
type ParamsOption func(*Params)

// 針對每個成員實現(xiàn)上面的簽名
func WithA(a int) ParamsOption {
	return func(Params *Params) {
		Params.a = a
	}
}

func WithB(b int) ParamsOption {
	return func(Params *Params) {
		Params.b = b
	}
}

func WithC(c int) ParamsOption {
	return func(Params *Params) {
		Params.c = c
	}
}

// 很多開源項目用的都是此類方式。。。
// 構(gòu)造 參數(shù)結(jié)構(gòu)體 Params
func NewParams(options ...ParamsOption) *Params {
    // 這里就是默認(rèn)值了
	const (
		a 	= 0
		b 	= 0
		c   = 0
	)

	x := &Params{
		a:  a,
		b: 	b,
		c:  c,
	}

	for _, o := range options {
		o(x) // 這里就是在改你的默認(rèn)值了
	}

	return x
}

// 那要怎么使用?
// 先改一下例子吧
func sum(params *Params) int {
    return params.a + params.b + params.c
}

// 然后可以這么用
// 你傳遞哪個With函數(shù)就會修改哪個默認(rèn)值執(zhí)行操作
Sum := sum(
    NewParams(
        WithA(1),
        WithB(2),
        WithC(3),
    )
)

// 結(jié)束了

3,無

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧


分享文章:golang函數(shù)參數(shù)默認(rèn)值-創(chuàng)新互聯(lián)
當(dāng)前網(wǎng)址:http://weahome.cn/article/jscih.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部