go语言 – else 语句

go语言中,else语句必须在if语句的右大括号后面的同一行中开始,否则编译器就会报错。这点跟其他c,java等语言是不一样的。

让我们通过一个程序来理解它。

package main

import (  
    "fmt"
)

func main() {  
    num := 10
    if num % 2 == 0 {
        fmt.Println("the number is even") 
    }  
    else { // 报错
        fmt.Println("the number is odd")
    }
}

在上面的程序中,else语句不在if语句}之后的同一行中开始。而是从下一行开始,这是不允许的,编译器会报错:

main.go:12:5: syntax error: unexpected else, expecting }  

原因是Go自动插入分号的方式,有关分号插入规则的信息,参考: http://golang.org/doc/effective_go.html#semicolons

在规则中,如果分号是行最后的标记,则在}之后插入分号。因此,在if语句的}后面会自动插入分号。

所以程序实际上变成了

if num%2 == 0 {  
      fmt.Println("the number is even") 
};  // go 自动插入分号
else {  
      fmt.Println("the number is odd")
}

if{...} else {...}是一个整体,不应该在它的中间出现分号。因此,需要将else放在结束}之后的同一行中。

修改程序,将else移到if}之后,以防止自动插入分号。

package main

import (  
    "fmt"
)

func main() {  
    num := 10
    if num%2 == 0 { 
        fmt.Println("the number is even") 
    } else {
        fmt.Println("the number is odd")
    }
}


浙ICP备17015664号 浙公网安备 33011002012336号 联系我们 网站地图  
@2019 qikegu.com 版权所有,禁止转载