您可以为此使用unsafe.Sizeof函数。它返回以字节为单位的大小,该大小由您传递给它的值占据。这是一个工作示例:
package mainimport "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, %dn", a, unsafe.Sizeof(a)) fmt.Printf("b: %T, %dn", b, unsafe.Sizeof(b)) fmt.Printf("c: %T, %dn", c, unsafe.Sizeof(c)) fmt.Printf("d: %T, %dn", d, unsafe.Sizeof(d))}请注意,某些平台明确禁止使用不安全,因为它是不安全的。这曾经包括AppEngine。不知道今天是否仍然如此,但我想是这样。
正如@Timur
Fayzrakhmanov指出的那样,
reflect.TypeOf(variable).Size()它将为您提供相同的信息。对于
reflect包装,与包装相同
unsafe。即:某些平台可能不允许其使用。



