我想检查一个结构是否为空,即它的所有字段是否都设置为其默认值。以下按预期工作:package mainimport "fmt"type MyStruct struct { field1 string field2 int}func main() { var mine MyStruct empty := MyStruct{} // Check if mine is empty. if mine == empty { fmt.Print("mine is empty") }}我想稍微缩短一下,所以我将空结构初始化移动到 if 语句中:func main() { var mine MyStruct // Check if mine is empty. if mine == MyStruct{} { fmt.Print("mine is empty") }}但这不起作用:syntax error: unexpected }, expecting := or = or comma. 尽管看起来与第一个示例几乎相同,但即使以下内容也不起作用:func main() { var mine MyStruct // Check if mine is empty. if empty := MyStruct{}; mine == empty { fmt.Print("mine is empty") }}编译器说:syntax error: need trailing comma before newline in composite literal。但是,我发现以下代码可以工作:func main() { var mine MyStruct // Check if mine is empty. if mine == *new(MyStruct) { fmt.Print("mine is empty") }}有人可以解释为什么编译器不接受上述两个示例吗?当我们在做的时候:检查“空”结构的惯用方法是什么?最后一个例子有效,但对我来说看起来有点奇怪。
1 回答
- 1 回答
- 0 关注
- 245 浏览
添加回答
举报
0/150
提交
取消