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

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

刪除切片中的元素并返回刪除的元素和剩余的元素

刪除切片中的元素并返回刪除的元素和剩余的元素

Go
繁星點(diǎn)點(diǎn)滴滴 2023-04-04 14:31:12
我只想要一個(gè)具有結(jié)構(gòu)類型“t”的切片的函數(shù),返回返回我正在尋找的元素和剩余的元素,我嘗試使用部分解決方案來解決我的問題,就像這里指出的那樣:Delete element in a slice 但出于一個(gè)奇怪的原因,它沒有按預(yù)期工作 https://play.golang.org/p/tvJwkF5c_tj  func main() {    var names = []string{"john", "julio", "pepito","carlos"}    fmt.Println(getMe("john", names))}func getMe(me string, names []string) (string, []string, bool) {    for i := range names {        if names[i] == me {            return names[i], append(names[:i], names[i+1:]...), true        }    }    return "", nil, false}但結(jié)果給了我:julio [julio pepito carlos] true更新:https: //play.golang.org/p/1xbu01rOiMg 從@Ullaakut 那里得到答案如果我這樣做:append(names[:i], names[i+1:]...),它會(huì)改變原始切片,所以這對我不起作用,我不希望我的切片改變,因?yàn)槲疑院髸?huì)用到它
查看完整描述

1 回答

?
Smart貓小萌

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

只需使用范圍來獲取值和索引,而不是使用索引來訪問值。


package main


import (

    "fmt"

)


func main() {

    var names = []string{"john", "julio", "pepito", "carlos"}

    name, newNames, _ := getMe("john", names)


    fmt.Println("extracted name:\t\t\t\t", name)

    fmt.Println("new slice without extracted name:\t", newNames)

    fmt.Println("old slice still intact:\t\t\t", names)

}


func getMe(me string, names []string) (string, []string, bool) {

    var newSlice []string


    for i := 0; i < len(names); i++ {

        if names[i] == me {

            newSlice = append(newSlice, names[:i]...)

            newSlice = append(newSlice, names[i+1:]...)

            return names[i], newSlice, true

        }

    }


    return "", nil, false

}

產(chǎn)出


extracted name:                        john

new slice without extracted name:      [julio pepito carlos]

old slice still intact:                [john julio pepito carlos]

參見游樂場示例

在請求更快的版本后進(jìn)行編輯:使用手冊 for 而不是范圍循環(huán)要快得多。由于您需要?jiǎng)?chuàng)建一個(gè)沒有元素的新切片,因此有必要在函數(shù)內(nèi)構(gòu)建一個(gè)新切片,這總是需要一些處理能力。


查看完整回答
反對 回復(fù) 2023-04-04
  • 1 回答
  • 0 關(guān)注
  • 113 瀏覽

添加回答

舉報(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)