菜鸟一枚
我知道 go 语言的 struct 对齐方式是 4 byte 为一个单位的
但我不知道怎么解释下面这个结构体为什么size是24
```go
type MyStruct struct{
x int8
s string
}
```
我用 sizeof 做实验
```go
func main(){
var tmp MyStruct = MyStruct{0,"x"}
fmt.Println(unsafe.Sizeof(tmp))
fmt.Println(unsafe.Sizeof(tmp.x))
fmt.Println(unsafe.Sizeof(tmp.s))
}
```
结果如下
```
24
1
16
```
string 是16(字符串头指针8,字符串长 8),x单独占用 4 byte,这样不应该是 20 吗?
24 怎么来的?
有疑问加站长微信联系(非本文作者)