一尘不染

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

go

我已经看到了使用这种模式的两段Go代码:

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

谁能解释这段代码的作用?


阅读 221

收藏
2020-07-02

共1个答案

一尘不染

声明结构时,此技术将强制使用键控字段。

例如,该结构:

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

只能用键控字段声明:

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

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

这样做的原因之一是允许将来在不破坏现有代码的情况下将其他字段添加到结构中。

2020-07-02