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

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

僅按 golang 中的第一個(gè)元素拆分字符串

僅按 golang 中的第一個(gè)元素拆分字符串

Go
慕運(yùn)維8079593 2022-05-23 16:08:32
我正在嘗試解析 git 分支名稱并將它們拆分,以便我可以將遠(yuǎn)程和分支名稱分開以前我只是在第一個(gè)斜杠上拆分:func ParseBranchname(branchString string) (remote, branchname string) {    branchArray := strings.Split(branchString, "/")    remote = branchArray[0]    branchname = branchArray[1]    return}但我忘記了有些人也在 git 分支名稱中使用斜杠,甚至多個(gè)!現(xiàn)在我從分割中取出切片中的第一個(gè)元素,然后移動(dòng)每個(gè)元素并在斜杠上合并:func ParseBranchname(branchString string) (remote, branchname string) {    branchArray := strings.Split(branchString, "/")    remote = branchArray[0]    copy(branchArray[0:], branchArray[0+1:])    branchArray[len(branchArray)-1] = ""    branchArray = branchArray[:len(branchArray)-1]    branchname = strings.Join(branchArray, "/")    return}有沒有更清潔的方法來做到這一點(diǎn)?
查看完整描述

3 回答

?
侃侃無極

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

對(duì)于 Go >= 1.18,請(qǐng)參閱此答案。


對(duì)于 Go < 1.18:


使用strings.SplitNwithn=2將結(jié)果限制為兩個(gè)子字符串。


func ParseBranchname(branchString string) (remote, branchname string) {

    branchArray := strings.SplitN(branchString, "/", 2)

    remote = branchArray[0]

    branchname = branchArray[1]

    return

}


查看完整回答
反對(duì) 回復(fù) 2022-05-23
?
瀟湘沐

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

去 1.18

使用strings.Cut:


s [此函數(shù)]圍繞 的第一個(gè)實(shí)例進(jìn)行sep切片,返回之前和之后的文本sep。結(jié)果found報(bào)告是否sep出現(xiàn)在s. 如果sep沒有出現(xiàn)s,則cut返回s, "", false。


func ParseBranchname(branchString string) (remote, branchname string) {

    remote, branchname, _ = strings.Cut(branchString, "/")

    return

}

(請(qǐng)注意,此代碼片段忽略了第三個(gè)返回值,一個(gè)布爾值,它表明是否在輸入字符串中找到了分隔符。)


正如 Go 1.18 發(fā)行說明中所述,Cut “可以替換和簡化 、 、 和 的Index許多IndexByte常見IndexRune用法SplitN”。特別是,SplitN與n=2。


Playground——最初由@mkopriva 在評(píng)論中發(fā)布——修改為包含一個(gè)示例Cut:https ://go.dev/play/p/bjBhnr3Hg5O


查看完整回答
反對(duì) 回復(fù) 2022-05-23
?
阿波羅的戰(zhàn)車

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

使用 strings.Index 查找第一個(gè) / 的索引,然后使用該信息手動(dòng)拆分:


func ParseBranchnameNew(branchString string) (remote, branchName string) {

        firstSlash := strings.Index(branchString, "/")

        remote = branchString[:firstSlash]

        branchName = branchString[firstSlash+1:]

        return

}

與您的原始代碼比較:


goos: linux

goarch: amd64

BenchmarkParseBranchname-12         10000000           131 ns/op

BenchmarkParseBranchnameNew-12      300000000            5.56 ns/op

PASS


查看完整回答
反對(duì) 回復(fù) 2022-05-23
  • 3 回答
  • 0 關(guān)注
  • 342 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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