2 回答

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))它會起作用(但我不建議您使用它,除非您有令人信服的理由這樣做)。

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
- 2 回答
- 0 關(guān)注
- 134 瀏覽
添加回答
舉報