Tương tự như những gì tôi đã học trong C++, tôi tin rằng đó là phần đệm gây ra sự khác biệt về kích thước của các thể hiện của cả hai cấu trúc.Tối ưu hóa cơ sở hạ tầng/liên kết từ đệm trong golang
type Foo struct {
w byte //1 byte
x byte //1 byte
y uint64 //8 bytes
}
type Bar struct {
x byte //1 byte
y uint64 //8 bytes
w byte// 1 byte
}
func main() {
fmt.Println(runtime.GOARCH)
newFoo := new(Foo)
fmt.Println(unsafe.Sizeof(*newFoo))
newBar := new(Bar)
fmt.Println(unsafe.Sizeof(*newBar))
}
Output:
amd64
16
24
- Có một quy tắc của ngón tay cái để làm theo khi xác định các thành viên struct? (như thứ tự tăng dần/giảm dần về kích thước của các loại)
- Có tối ưu hóa thời gian biên dịch nào mà chúng ta có thể vượt qua, có thể tự động xử lý điều này không?
- Hoặc tôi không nên lo lắng về điều này?
tôi đã thực hiện một ví dụ mà có thể cung cấp một số hiểu biết https://play.golang.org/p/dNWspo2Dxv – jpgerek