2 回答

TA貢獻(xiàn)2019條經(jīng)驗(yàn) 獲得超9個(gè)贊
Go 是相當(dāng)?shù)图?jí)的,這意味著迭代切片是最有效的方法。其他語(yǔ)言可能有這些東西的內(nèi)置函數(shù),但它們所做的只是遍歷切片,沒(méi)有迭代就沒(méi)有辦法做到這一點(diǎn)。但是有一些技巧,特別是使用范圍并避免索引切片,因?yàn)樵浇鐧z查有開(kāi)銷。這將是最有效的:
func convertTo64(ar []float32) []float64 {
newar := make([]float64, len(ar))
var v float32
var i int
for i, v = range ar {
newar[i] = float64(v)
}
return newar
}
slice32 := make([]float32, 1000)
slice64 := convertTo64(slice32)
請(qǐng)注意,:=在范圍循環(huán)中使用 的效率低下,因?yàn)樵?Go 的當(dāng)前版本中,變量每次都被丟棄并重新創(chuàng)建,而不是被重用。使用range而不是for i=0; i<n; i++更有效,因?yàn)樗?jié)省了對(duì) 的邊界檢查ar。
- 2 回答
- 0 關(guān)注
- 229 瀏覽
添加回答
舉報(bào)