So(unsafe.Sizeof(true), ShouldEqual, 1) So(unsafe.Sizeof(int8(0)), ShouldEqual, 1) So(unsafe.Sizeof(int16(0)), ShouldEqual, 2) So(unsafe.Sizeof(int32(0)), ShouldEqual, 4) So(unsafe.Sizeof(int64(0)), ShouldEqual, 8) So(unsafe.Sizeof(int(0)), ShouldEqual, 8) So(unsafe.Sizeof(float32(0)), ShouldEqual, 4) So(unsafe.Sizeof(float64(0)), ShouldEqual, 8) So(unsafe.Sizeof(""), ShouldEqual, 16) So(unsafe.Sizeof("hello world"), ShouldEqual, 16) So(unsafe.Sizeof([]int{}), ShouldEqual, 24) So(unsafe.Sizeof([]int{1, 2, 3}), ShouldEqual, 24) So(unsafe.Sizeof([3]int{1, 2, 3}), ShouldEqual, 24) So(unsafe.Sizeof(map[string]string{}), ShouldEqual, 8) So(unsafe.Sizeof(map[string]string{"1": "one", "2": "two"}), ShouldEqual, 8) So(unsafe.Sizeof(struct{}{}), ShouldEqual, 0)
Salin selepas log masuk
- Walaupun hanya terdapat satu bit jenis bool, tetapi ia juga perlu menduduki 1 bait, kerana komputer ialah unit bait
- 64 mesin, int menduduki 8 bait
- jenis rentetan menduduki 16 bait , secara dalaman mengandungi penunjuk kepada data (8 bait) dan panjang int (8 bait)
- jenis kepingan menduduki 24 bait, secara dalaman mengandungi penunjuk kepada data (bahagian 8 perkataan) dan panjang int (8 bait) dan kapasiti int (8 bait)
- Jenis peta menduduki 8 bait dan merupakan penunjuk kepada struktur peta
- Anda boleh menggunakan struct{} untuk mewakili kosong jenis. Jenis ini tidak menduduki sebarang ruang Gunakan ini sebagai nilai peta Anda boleh menggunakan peta sebagai satu set
// |x---| So(unsafe.Sizeof(struct { i8 int8 }{}), ShouldEqual, 1)
Salin selepas log masuk
// |x---|xxxx|xx--| So(unsafe.Sizeof(struct { i8 int8 i32 int32 i16 int16 }{}), ShouldEqual, 12) // |x-xx|xxxx| So(unsafe.Sizeof(struct { i8 int8 i16 int16 i32 int32 }{}), ShouldEqual, 8)
Salin selepas log masuk
// |x---|xxxx|xx--|----|xxxx|xxxx| So(unsafe.Sizeof(struct { i8 int8 i32 int32 i16 int16 i64 int64 }{}), ShouldEqual, 24) // |x-xx|xxxx|xxxx|xxxx| So(unsafe.Sizeof(struct { i8 int8 i16 int16 i32 int32 i64 int64 }{}), ShouldEqual, 16)
Salin selepas log masuk
type I8 int8 type I16 int16 type I32 int32 So(unsafe.Sizeof(struct { i8 I8 i16 I16 i32 I32 }{}), ShouldEqual, 8)
Salin selepas log masuk