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

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

使用 make 函數(shù)創(chuàng)建結(jié)構(gòu)切片時(shí)默認(rèn)添加空元素

使用 make 函數(shù)創(chuàng)建結(jié)構(gòu)切片時(shí)默認(rèn)添加空元素

Go
滄海一幻覺(jué) 2022-07-11 16:04:45
我有一個(gè)定義如下所示的結(jié)構(gòu):type abc struct {  srcName string  destName string  flag    bool  'default:false'}在我的代碼中,我使用 make 函數(shù)對(duì)其進(jìn)行初始化var abcList []abcfunc init() {    abcList = make([]abc, 1)}func main() { var abcElem abc abc.srcName = "src" abc.destName = "dest" abc.flag  = true abcList = append(abcList, abc) klog.Info("abcList:", abcList)}我看到輸出為:abcList: [{    false} {"src", "dest", true}]想知道為什么要添加默認(rèn)值的切片元素。這不是一件錯(cuò)誤的事情嗎?如果我用更大的容量初始化這個(gè)切片,那么我會(huì)看到許多具有默認(rèn)值的此類(lèi)元素。它在迭代這個(gè)切片時(shí)增加了額外的成本。
查看完整描述

4 回答

?
叮當(dāng)貓咪

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

你需要做:


make([]abc, 0, 1)

第二個(gè)參數(shù)是片數(shù),第三個(gè)是容量。


如果你用它初始化一個(gè)切片,s := make([]abc, 1)它將包含一個(gè)空元素。您可以使用 覆蓋該元素s[0] = xyz。如果您append進(jìn)入切片,則空元素將保留并添加新元素。


注意:init這里不需要該函數(shù)。你可以這樣做:


// package level declaration

var abcList = make([]abc, 0, 1)


查看完整回答
反對(duì) 回復(fù) 2022-07-11
?
拉莫斯之舞

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

make([]abc, 0, 1) 或僅使用 var abcList []abc 不要使用 make 初始化



查看完整回答
反對(duì) 回復(fù) 2022-07-11
?
MYYA

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

go  make([]abc, 1) 長(zhǎng)度設(shè)置為1。為了理解它,數(shù)組初始化的 go 語(yǔ)法是

make([]array, length, capacity)

在哪里創(chuàng)建和初始化一個(gè)新array的大小length,可以擴(kuò)展到capacity. 在您的情況下length=1,意味著創(chuàng)建一個(gè)類(lèi)型數(shù)組[]abc并使用默認(rèn)值初始化一個(gè)元素。capacity不存在,這意味著capacity=n

您可以通過(guò)以下方式避免默認(rèn)值初始化,

make([]abc, 0, <1...n>)

或者

abcList = []abc{}


查看完整回答
反對(duì) 回復(fù) 2022-07-11
?
Helenr

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

我看不到在哪里調(diào)用了初始化代碼。發(fā)布此問(wèn)題時(shí),您一定錯(cuò)過(guò)了上面的代碼。你沒(méi)有init()在任何地方調(diào)用main()

init 函數(shù)是不必要的,因?yàn)槟?main() 函數(shù)中使用了 append。


查看完整回答
反對(duì) 回復(fù) 2022-07-11
  • 4 回答
  • 0 關(guān)注
  • 125 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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