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

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

將[]int64轉(zhuǎn)換為[]uint64的最佳方法是什么

將[]int64轉(zhuǎn)換為[]uint64的最佳方法是什么

Go
不負(fù)相思意 2022-05-18 10:36:13
我想將一片 []int64 轉(zhuǎn)換為 []uint64,什么是最有效和優(yōu)雅的方式?我只知道以下方式:func convert(userIDs ...int64) []uint64 {    uIDs := make([]uint64, len(userIDs))    for index, uID := range userIDs {        uIDs[index] = uint64(uID)    }    fmt.Printf("%T, %v\n", uIDs, uIDs)    return uIDs}
查看完整描述

2 回答

?
炎炎設(shè)計

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

如果不訴諸不安全,您就無法避免循環(huán):


b := make([]uint64, len(a))

for i, v := range a {

    b[i] = uint64(v)

}

有關(guān)更多信息/示例,請參閱此問題或此問題。如果您真的想使用unsafe,那么b := *(*[]uint64)(unsafe.Pointer(&a))它會起作用(但我不建議您使用它,除非您有令人信服的理由這樣做)。


查看完整回答
反對 回復(fù) 2022-05-18
?
慕斯709654

TA貢獻(xiàn)1840條經(jīng)驗 獲得超5個贊

正如 Birits 所回答的,只有一種方法可以將一個切片轉(zhuǎn)換為另一個切片。


除非您正在尋找強(qiáng)制轉(zhuǎn)換方法:


1) unsafe.Pointer cast*(*[]uint64)(unsafe.Pointer(&int64_slice))


2) 使用鏈接名編譯指示編輯過的簽名重新導(dǎo)入:


//go:linkname convert convert.Slice

func convert(userIDs []int64) []int64 {

    return userIDs

}


//go:linkname ConvertSliceInt64ToUInt64 convert.Slice

func ConvertSliceInt64ToUInt64(userIDs ...int64) []uint64

https://play.golang.org/p/8b-yVL_Ps-c


查看完整回答
反對 回復(fù) 2022-05-18
  • 2 回答
  • 0 關(guān)注
  • 134 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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