亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將一種數字類型的切片轉換為另一種類型

如何將一種數字類型的切片轉換為另一種類型

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

2 回答

?
慕少森

TA貢獻2019條經驗 獲得超9個贊

Go 是相當低級的,這意味著迭代切片是最有效的方法。其他語言可能有這些東西的內置函數,但它們所做的只是遍歷切片,沒有迭代就沒有辦法做到這一點。但是有一些技巧,特別是使用范圍并避免索引切片,因為越界檢查有開銷。這將是最有效的:


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)

請注意,:=在范圍循環中使用 的效率低下,因為在 Go 的當前版本中,變量每次都被丟棄并重新創建,而不是被重用。使用range而不是for i=0; i<n; i++更有效,因為它節省了對 的邊界檢查ar。


查看完整回答
反對 回復 2021-08-30
  • 2 回答
  • 0 關注
  • 232 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號