考虑以下内容:
import (
"log"
"unsafe"
)
type Foo struct {
Bar int32
}
func main() {
log.Println(int(unsafe.Sizeof(Foo{})))
}
为什么确定变量大小被认为是不安全的,并且是unsafe包的一部分?我不理解为什么获取任何类型的大小都是一项不安全的操作,或者go使用什么机制来确定其大小,需要这样做。
我还想知道是否有其他替代方案可以用于确定已知结构体的大小,而不使用unsafe包。
reflect
来避免需要导入和使用unsafe
,例如reflect.TypeOf(Foo{}).Size()
。 - iczaSizeof
移出unsafe
。 https://github.com/golang/go/issues/5602 - leaf bebop