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

为什么在 go 工作中不检查 nil?

为什么在 go 工作中不检查 nil?

Go
UYOU 2021-11-08 16:56:33
在第一个代码示例中,我收到“if pr != nil”行的错误:for sup, _ := range supervisorToColor {        pr := emailToPerson[sup]        // The line below causes the compilation error:        // ./myprog.go:1046: missing condition in if statement        // ./myprog.go:1046: pr != nil evaluated but not used        if pr != nil         {             local := peopleOnFloor[pr.Email]          sp := &Super{pr, local}          names = append(names, sp)         }   }   如果我注释掉 nil check if 语句,它编译得很好:for sup, _ := range supervisorToColor {        pr := emailToPerson[sup]        // if pr != nil         // {          local := peopleOnFloor[pr.Email]          sp := &Super{pr, local}          names = append(names, sp)         // }}   起初我倾向于认为这是代码早期的一些语法错误,但是当我注释掉这些行时它起作用的事实让我认为它是别的东西。emailToPerson 是 map[string]*Person 类型,其中 Person 是一个结构体提前致谢。如果事实证明这是非常简单的事情,我们深表歉意。
查看完整描述

1 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

左花括号需要与 位于同一行if:


if pr != nil { 

从关于分号的Go 规范:


正式语法使用分号“;” 作为许多作品的终结者。Go 程序可以使用以下两条规则省略大部分分号:


当输入被分解为标记时,如果该标记是


标识符

整数、浮点数、虚数、符文或字符串文字

关键字之一break, continue, fallthrough, 或return

运算符和分隔符之一++, --, ), ], 或}

为了让复杂的语句占据一行,可以在结束的“ )”或“ }”之前省略分号。


这意味着您的代码等效于:


if pr != nil;

{

    // ...

}


查看完整回答
反对 回复 2021-11-08
  • 1 回答
  • 0 关注
  • 141 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信