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

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

如何在字符串?dāng)?shù)組golang上實(shí)現(xiàn)刪除范圍?

如何在字符串?dāng)?shù)組golang上實(shí)現(xiàn)刪除范圍?

Go
呼喚遠(yuǎn)方 2022-10-31 17:25:42
如何RemoveRange在 golang 中實(shí)現(xiàn)方法?它是 C# 中的一種方法,如下所示我想RemoveRange在我的字符串?dāng)?shù)組上實(shí)現(xiàn)方法,hashCode并在刪除這些范圍的情況下返回新的修改數(shù)組。func removeRange(hashCode []string, idx int, count int) []string {    var temp []string    for i, s := range hashCode {            fmt.Println(i, s)      // confuse here on what to do    }    return temp}
查看完整描述

3 回答

?
精慕HU

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

只需將切片切片 until idx,跳過count元素并將其余元素附加到第一次切片的結(jié)果中:


func removeRange(hashCode []string, idx int, count int) []string {

    return append(hashCode[:idx], hashCode[idx+count:]...)

}

測(cè)試它:


s := []string{"0", "1", "2", "3", "4", "5"}

fmt.Println(s)

s = removeRange(s, 1, 2)

fmt.Println(s)

哪些輸出(在Go Playground上嘗試):


[0 1 2 3 4 5]

[0 3 4 5]

注意:上述實(shí)現(xiàn)不檢查索引是否有效(是否在范圍內(nèi))。如果沒有,代碼可能會(huì)恐慌。如果需要,請(qǐng)?zhí)砑颖匾臋z查。


注意#2:上述實(shí)現(xiàn)修改了傳入切片的元素,返回的切片將共享參數(shù)的后備數(shù)組。如果你想避免這種情況,如果你想保持輸入不變并為結(jié)果分配一個(gè)新切片,那么這樣做:


func removeRange(hashCode []string, idx int, count int) []string {

    result := make([]string, 0, len(hashCode)-count)

    result = append(result, hashCode[:idx]...)

    result = append(result, hashCode[idx+count:]...)

    return result

}

在Go Playground上試試這個(gè)。


查看完整回答
反對(duì) 回復(fù) 2022-10-31
?
qq_遁去的一_1

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

在 golang 中,您根本不需要為此提供方法或函數(shù)。Go 切片可以在適當(dāng)位置進(jìn)行子切片和附加,這就是您可以快速輕松地從任何切片中刪除子集的方法。

假設(shè)您要?jiǎng)h除 2 個(gè)元素,從索引 2 開始,您只需編寫:

Sub := append(original [:2], original [4:]...)

演示

這是如何工作的:

  • original[:2]創(chuàng)建從 0 開始的子切片,長度為 2 個(gè)元素(因此索引 0 和 1)

  • append因?yàn)閷?duì)于第一部分,我們要添加切片的其余部分,減去我們要跳過/刪除的范圍

  • original[4:]創(chuàng)建另一個(gè)子切片,這次從索引 4 開始,并在任何original結(jié)束處結(jié)束。就像我們沒有在第一個(gè)子切片中明確提到 0 作為起點(diǎn)一樣,通過在此處不指定元素的數(shù)量,golang 將僅包含切片中的所有剩余元素。

  • ...因?yàn)?code>append是一個(gè)可變參數(shù)函數(shù)(內(nèi)置,但你明白了),我們需要傳入我們想要附加的每個(gè)元素作為新參數(shù)。...運(yùn)算符擴(kuò)展子切片并將每個(gè)元素作為單獨(dú)的參數(shù)傳入。

因?yàn)槲覀儗⑿虑衅峙浣o了新變量,original將保持不變,所以如果要覆蓋切片,只需將其分配給相同的變量即可。


注意我是在手機(jī)上寫的,所以標(biāo)記和代碼可能不太正確,但這至少應(yīng)該回答你的問題


查看完整回答
反對(duì) 回復(fù) 2022-10-31
?
梵蒂岡之花

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

我已經(jīng)使用//注釋解釋了代碼,如果沒有注釋,代碼是不言自明的。


package main


import (

    "fmt"

    "os"

)


func RemoveRange(s []string, index, count int) []string {

    sLen := len(s)


    // Similar semantics to match (similar) the behavior of

    // C# implementation

    switch {

    case index < 0, count < 0: // arguments are not valid

        fmt.Fprintln(os.Stderr, "error: argument out of range error")

        return s

    case index+count-1 >= sLen: // range results in exceeding the limit

        fmt.Fprintln(os.Stderr, "error: argument error")

        return s

    }


    // Create a slice p and pre-allocate the size required

    // to store the resultant slice after removing range.

    // Result := s[:] -> s[:index] + s[index+count:]

    // Remove := s[index:index+count-1]

    p := make([]string, 0, sLen-count)

    p = append(p, s[:index]...)

    p = append(p, s[index+count:]...)


    return p

}


func main() {

    s := []string{"0", "1", "2", "3", "4", "5"}

    fmt.Println(s)

    r := RemoveRange(s, 1, 3)

    fmt.Println(r)

}

輸出:


[0 1 2 3 4 5]

[0 4 5]


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

添加回答

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