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

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

如何將一種數(shù)字類型的切片轉(zhuǎn)換為另一種類型

如何將一種數(shù)字類型的切片轉(zhuǎn)換為另一種類型

Go
MMTTMM 2021-08-30 16:29:18
我正在試驗(yàn) Go 語(yǔ)言并且對(duì)它很陌生。我已經(jīng)成功地完成了教程,現(xiàn)在正在編寫(xiě)一個(gè)小程序來(lái)評(píng)估我通常執(zhí)行的操作類型的性能。我有一個(gè)很長(zhǎng)的 float32 類型切片,需要盡可能有效地將其轉(zhuǎn)換為 float64 類型的切片。除了遍歷切片的元素并通過(guò) output[i] = float64(data[i]) 顯式轉(zhuǎn)換單個(gè)元素的類型之外,是否有其他方法可以用來(lái)轉(zhuǎn)換整個(gè)切片而無(wú)需迭代?我試過(guò)尋找解決方案,但沒(méi)有找到任何直接相關(guān)的東西。
查看完整描述

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。


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

添加回答

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