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

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

如何在Go中實(shí)現(xiàn)可調(diào)整大小的數(shù)組

如何在Go中實(shí)現(xiàn)可調(diào)整大小的數(shù)組

Go
守著一只汪 2021-04-08 16:15:41
我來(lái)自C ++背景,并且習(xí)慣于使用std::vector此類的東西。假設(shè)我想要這些的動(dòng)態(tài)數(shù)組:type a struct {    b int    c string}這樣做的標(biāo)準(zhǔn)方法是什么?
查看完整描述

3 回答

?
狐的傳說(shuō)

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

使用append()內(nèi)置


例子:


type mytype struct {

  a, b int

}


func main() {

  a := []mytype{mytype{1, 2}, mytype{3, 4}}

  a = append(a, mytype{5, 6})

}


查看完整回答
反對(duì) 回復(fù) 2021-04-26
?
慕婉清6462132

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

Go Slice包含三個(gè)元素:數(shù)據(jù),長(zhǎng)度和容量。


s := make([]int, 0, 10)

變量s是一個(gè)整數(shù)切片,其長(zhǎng)度為0,容量為10。內(nèi)置的len()和cap()函數(shù)允許您獲取切片的長(zhǎng)度和容量:


len(s) == 0

cap(s) == 10

要增加切片的長(zhǎng)度,只需重新切片:


s = s[0:5]

// len(s) == 5

// cap(s) == 10

要減少長(zhǎng)度,可以采用子切片:


s = s[0:1]

// len(s) == 1

有一些較短的方法可以調(diào)用make():


a := make([]int, 10) 

// len(a) == cap(a) == 10


b := make([]int)

// len(b) == cap(b) == 0

一切都很好,但是如果您需要將切片的長(zhǎng)度增加到超出其容量,該怎么辦?為此,您需要分配一個(gè)新的片并將舊片的內(nèi)容復(fù)制到新的片上。(函數(shù)“ copy”是另一個(gè)內(nèi)置函數(shù)。)


t := make([]int, len(s), 20)

copy(t, s)

在有效圍棋文檔需要這個(gè)例子有點(diǎn)進(jìn)一步,實(shí)現(xiàn)一個(gè)附加功能追加一個(gè)切片到另一個(gè),調(diào)整其大小,如果必要的。


切片由數(shù)組支持;當(dāng)make()一片特定容量的切片時(shí),該容量的數(shù)組將在后臺(tái)分配。切片實(shí)際上成為該數(shù)組的“智能指針”。如果將該切片(或該切片的子切片)傳遞給另一個(gè)函數(shù),則它將作為指向同一數(shù)組的指針傳遞。這使得子切片的創(chuàng)建非常便宜-昂貴的是后備陣列的分配。


Go標(biāo)準(zhǔn)庫(kù)包含許多容器軟件包(例如vector),從而無(wú)需手動(dòng)管理切片。使用切片可以提高速度,而使用更精細(xì)的容器類可以更加方便。(也就是說(shuō),大多數(shù)情況下我仍然使用切片。)


您可能想知道為什么需要處理所有這些麻煩。畢竟,許多語(yǔ)言都提供動(dòng)態(tài)調(diào)整大小的數(shù)組作為基元。這樣做的原因與Go的哲學(xué)息息相關(guān)。語(yǔ)言設(shè)計(jì)人員不會(huì)假定您知道適合您的程序的分配策略是什么;相反,它們?yōu)槟峁┝藰?gòu)建自己的數(shù)據(jù)結(jié)構(gòu)所需的工具。


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

添加回答

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