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

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

如何在切片增長(zhǎng)時(shí)自動(dòng)將切片的新元素添加到函數(shù)參數(shù)

如何在切片增長(zhǎng)時(shí)自動(dòng)將切片的新元素添加到函數(shù)參數(shù)

Go
三國(guó)紛爭(zhēng) 2023-03-21 10:39:28
有沒有辦法自動(dòng)執(zhí)行此操作?package mainimport "fmt"func main() {    var a []string    a = append(a, "this", "this2", "this3")    increaseArguments(a)    a = append(a, "this4")    increaseArguments(a)}func increaseArguments(b []string) {    // I want, when i add new element to slice i want this function act as this    // fmt.Println(b[0],b[1], b[2], b[3])    fmt.Println(b[0], b[1], b[2])}除了將 b[3] 作為參數(shù)添加到 fmt.Println 之外,有沒有辦法自動(dòng)添加它?
查看完整描述

1 回答

?
拉風(fēng)的咖菲貓

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

請(qǐng)注意,如果b是 type []any,您可以將其作為 的可變參數(shù)的值傳遞fmt.Println()

fmt.Println(b...)

但由于b是 type []string,你不能。

但是如果你變成b一個(gè)[]any切片,你可以。您可以使用此輔助函數(shù)來(lái)執(zhí)行此操作:

func convert[T any](x []T) []any {

    r := make([]any, len(x))

    for i, v := range x {

        r[i] = v

    }

    return r

}

進(jìn)而:


func increaseArguments(b []string) {

    fmt.Println(convert(b)...)

}

這將輸出(在Go Playground上嘗試):


this this2 this3

this this2 this3 this4

注意:在中創(chuàng)建新切片convert()不會(huì)使此解決方案變慢,因?yàn)轱@式傳遞值(如fmt.Println(b[0], b[1], b[2]))也會(huì)隱式創(chuàng)建切片。


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

添加回答

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