相当于sizeof
go unsafe.Sizeof
.它与C中的sizeof之间的一个区别在于它仅在值上定义(而在C中,它适用于值和类型).另一个主要区别在于,它几乎不需要,而在C中则相当常见.
一个例子是:
package main
import (
"fmt"
"unsafe"
)
func main() {
fmt.Println(unsafe.Sizeof(int(0)))
}
Run Code Online (Sandbox Code Playgroud)
如果要查找特定值的大小,有两种方法可以做到这一点 - 使用不安全的包或使用反射包.以下代码演示了两者:
package main
import (
"fmt"
"reflect"
"unsafe"
)
func main() {
var i int
fmt.Printf("Size of var (reflect.TypeOf.Size): %d\n", reflect.TypeOf(i).Size())
fmt.Printf("Size of var (unsafe.Sizeof): %d\n", unsafe.Sizeof(i))
}
Run Code Online (Sandbox Code Playgroud)
但是,我不知道如何直接获取类型的大小.但我认为你会发现sizeof函数不像C中那样经常需要.
如果您只想查找int
或的大小uint
,请使用strconv.IntSize
.
Run Code Online (Sandbox Code Playgroud)const IntSize = intSize
IntSize
是aint
或uint
value的位大小.
例如,
package main
import (
"fmt"
"runtime"
"strconv"
)
func main() {
fmt.Println(runtime.Compiler, runtime.GOARCH, runtime.GOOS)
fmt.Println(strconv.IntSize)
}
Run Code Online (Sandbox Code Playgroud)
输出:
gc amd64 linux
64
Run Code Online (Sandbox Code Playgroud)