为了账号安全,请及时绑定邮箱和手机立即绑定

if 语句中的结构初始化

if 语句中的结构初始化

Go
富国沪深 2021-08-10 10:37:41
我想检查一个结构是否为空,即它的所有字段是否都设置为其默认值。以下按预期工作: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
提交
取消
意见反馈 帮助中心 APP下载
官方微信