包含空结构的名为“_”(下划线)的字段的用途是什么?

时间:2018-01-22 12:06:10

标签: go struct

我使用这种模式看过两段Go代码:

type SomeType struct{
  Field1 string
  Field2 bool
  _      struct{}    // <-- what is this?
}

任何人都可以解释一下这段代码的用途吗?

1 个答案:

答案 0 :(得分:10)

此技术在声明结构时强制执行键控字段。

例如,struct:

type SomeType struct {
  Field1 string
  Field2 bool
  _      struct{}
}

只能用键控字段声明:

// ALLOWED:
bar := SomeType{Field1: "hello", Field2: "true"}

// COMPILE ERROR:
foo := SomeType{"hello", true}

这样做的一个原因是允许将来添加其他字段而不会破坏现有代码。