Why do struct declarations sometimes contain blank fields?

huangapple go评论86阅读模式
英文:

Why do struct declarations sometimes contain blank fields?

问题

golang规范中可以看到:

// 一个有6个字段的结构体。
struct {
    x, y int
    u float32
    _ float32  // 填充字段
    A *[]int
    F func()
}
  • struct内部使用空白 _字段的实际场景有哪些?(提供一些代码片段会很有帮助)
英文:

From the golang spec

// A struct with 6 fields.
struct {
	x, y int
	u float32
	_ float32  // padding
	A *[]int
	F func()
}
  • Are there any practical scenarios of using the blank _ fields inside a struct? (some code snippets would be appreciated)

答案1

得分: 9

填充(padding)就是它的字面意思:一些填充用来对齐后续字段,以满足你的需求,例如匹配C结构的布局。它无法被访问(至少不能通过unsafe包访问)。

英文:

The padding is exactly what it is called: Some padding to align the following field to your needs, e.g. to match the layout of a C struct. It cannot be accessed (at least not without package unsafe).

huangapple
  • 本文由 发表于 2013年12月3日 01:00:52
  • 转载请务必保留本文链接:https://go.coder-hub.com/20333731.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定