第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

使用配置中的值更新字符串?dāng)?shù)組

使用配置中的值更新字符串?dāng)?shù)組

Go
慕工程0101907 2023-06-26 15:44:11
我有以下函數(shù),需要在兩個(gè)選項(xiàng)中提供帶有數(shù)據(jù)的字符串提供了配置中的值(只能更改7MB或 的值3MB)所有前綴都是相同的如果未提供配置,則回退到默認(rèn)值,7MB 并且3MB例子如果我沒有從配置 API 中獲取任何值,該函數(shù)應(yīng)該返回默認(rèn)值,該值是硬編碼在函數(shù)中的。像這樣:“l(fā)_sh_dit conf_data 7MB  l_sh_dit cert_data 3MB”如果我從應(yīng)用程序中獲得價(jià)值,config假設(shè)分別為 1MB(conf)和 100MB(cert),則該函數(shù)的輸出應(yīng)該看起來像 l“l(fā)_sh_dit conf_data 1MB  l_sh_dit cert_data 100MB”問題是我已經(jīng)有了defaults值hard-coded,如何才能element有效地更新數(shù)組中的每個(gè)值中的最后一個(gè)值(數(shù)字 10M 或所有其他值)?我嘗試過使用字符串生成器 API,但沒有成功,因?yàn)檫@有點(diǎn)棘手,這里可能缺少什么?func getShCfg() string{var out []stringvar b1 strings.Builderla:= "l_sh_dit conf_data 7MB"lb := "l_sh_dit cert_data 3MB"cfg, ok := c.(config.Configuration)if !ok {    log.Errorf(“error:”, c)    return ""}// here I got the data from config, else fallback to defaults if len(cfg.A) > 0 {   // HERE is my problem which doesn’t works   b1.WriteString("l_sh_dit")   b2 := b1   b2.WriteString("conf_data")    b3 := b2   b3.WriteString(cfg.A)    out = append(out, b3)} else {    out = append(out, la)}// here I got the data from config, else fallback to defaults if len(cfg.B) > 0 {   // HERE is my problem which doesn’t works   b1.WriteString("l_sh_dit")   b2 := b1   b2.WriteString("cert_data")    b3 := b2   b3.WriteString(cfg.B)    out = append(out, b3)} else {    out = append(out, lb)}return strings.Join(out, ";\n\r") + ";"}
查看完整描述

1 回答

?
繁花如伊

TA貢獻(xiàn)2012條經(jīng)驗(yàn) 獲得超12個(gè)贊

您的程序失敗的原因之一是您正在復(fù)制不允許的非零strings.Builder實(shí)例。

Builder 用于使用 Write 方法有效地構(gòu)建字符串。它最大限度地減少了內(nèi)存復(fù)制。零值即可使用。不要復(fù)制非零構(gòu)建器。

另外,我在這里可能是錯(cuò)的,但我相信構(gòu)建器的目的是在處理足夠復(fù)雜的規(guī)則時(shí)提供更好的性能,其中使用大量單獨(dú)的步驟來構(gòu)建字符串是合理的。然而,您的情況不是其中之一,因?yàn)槟枰闹皇且粋€(gè)串聯(lián)即可獲得您想要的東西。

type Cfg struct { A, B string }


func getShCfg(c Cfg) string {

? ? var out []string


? ? la := "l_sh_dit conf_data 7MB"

? ? lb := "l_sh_dit cert_data 3MB"


? ? if len(c.A) > 0 {

? ? ? ? out = append(out, "l_sh_dit conf_data " + c.A)

? ? } else {

? ? ? ? out = append(out, la)

? ? }

? ? if len(c.B) > 0 {

? ? ? ? out = append(out, "l_sh_dit cert_data "+c.B)


? ? } else {

? ? ? ? out = append(out, lb)

? ? }


? ? return strings.Join(out, ";\n\r") + ";"


}

https://play.golang.com/p/WKMXxCXGuTt


此外,如果配置屬性的數(shù)量增加并且您希望避免編寫太多 if-else,那么您始終可以將該邏輯提取到函數(shù)中。


func getCfgProp(key, val, def string) string {

? ? if len(val) > 0 {

? ? ? ? return key + " " + val

? ? }

? ? return key + " " + def

}

https://play.golang.com/p/daXqV4-Umza


查看完整回答
反對(duì) 回復(fù) 2023-06-26
  • 1 回答
  • 0 關(guān)注
  • 168 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)