4 回答

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)

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超10個(gè)贊
make([]abc, 0, 1) 或僅使用 var abcList []abc 不要使用 make 初始化

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{}

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。
- 4 回答
- 0 關(guān)注
- 125 瀏覽
添加回答
舉報(bào)