您可以使用不安全.Sizeof https://godoc.org/unsafe#Sizeof为此功能。
它返回以字节为单位的大小,由您传递给它的值占用。
这是一个工作示例 http://play.golang.org/p/ZqeA6OaaCi:
package main
import "fmt"
import "unsafe"
func main() {
a := int(123)
b := int64(123)
c := "foo"
d := struct {
FieldA float32
FieldB string
}{0, "bar"}
fmt.Printf("a: %T, %d\n", a, unsafe.Sizeof(a))
fmt.Printf("b: %T, %d\n", b, unsafe.Sizeof(b))
fmt.Printf("c: %T, %d\n", c, unsafe.Sizeof(c))
fmt.Printf("d: %T, %d\n", d, unsafe.Sizeof(d))
}
请注意,某些平台明确禁止使用 unsafe,因为它……嗯,不安全。这曾经包括 AppEngine。不确定今天是否仍然如此,但我想是的。
正如@Timur Fayzrakhmanov 所说,reflect.TypeOf(variable).Size()
会给你同样的信息。为了reflect
包,同样的限制适用于unsafe
包裹。即:某些平台可能不允许其使用。