a:=[]int{1,2,3}
b:=[]int32(a) //这样好像不行
只能遍历一个个转么
1.32位系统下,int默认是32位的, 此时int大小等于int32
此时可以使用unsafe转换
import (
"fmt"
"unsafe"
)
func main() {
a := []int{1,2,3}
b := *(*[]int32)(unsafe.Pointer(&a))
fmt.Println(b)
}
2.64位系统下,int默认是64位的, 此时int大小等于int64
用上述方法话,由于ptr0 + ptr(int32)的指针不指向任何数组{1,2,3}值,所以是野指针
所以64位下转换会有问题,暂时没找到过滤掉野指针的方法。
6 回答2.9k 阅读✓ 已解决
8 回答3.5k 阅读
2 回答2.4k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
2 回答1.7k 阅读✓ 已解决
2 回答1.9k 阅读✓ 已解决
4 回答1.9k 阅读
只能遍历,golang真的没有语法糖