在go里面进行更彻底的类型转换

在一般情况下,我们使用一种比较安全的类型转换,比如int->uint, string->[]byte. 默认情况下我们没有办法把float64转换成[]byte,或者在使用cgo的时候,将c的指针类型转换成Go的[]byte. 这种情况很容易碰到,我在阅读某份Go程序的代码时,发现了一个解决方案:

  • 使用unsafe.Pointer
var data float64 = 100
var b []byte = (*[1 << 30]byte)(unsafe.Pointer(&data))[0:8]
print(b)

Published: November 30 2012

  • tags: