在第一个代码示例中,我收到“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;
{
// ...
}
- 1 回答
- 0 关注
- 141 浏览
添加回答
举报
0/150
提交
取消