Go 中只有很少几个结构控制。没有do或者while循环 只有for、switch、if还有叫做类型选择和多路通信转接器select 与其他语言比较是没有圆括号、而语句体必须总是包含在大括号内
if x >0 {
return x
} else {
return y
}
强制大括号鼓励将简单的if语句写在多行上。
if和switch 接受初始化语句。通常设置一个局部变量
if err := file.Chmod(0664); err !=nil {
log.Stderr(err)
return err
}
在Go 语法中是非法的
if err != nil
{
}
在if函数中有一个Bug
if err != nil {
return err
} else {
return nil
}
它不会编译。这是Go编译的一个Bug
Go 有goto语句
fund myfunc() {
i := 0
Here:
println(i)
i++
goto Here
}
Go中标签大小写是敏感的。
Go中for循环有三种形式。只有一种是使用分号分隔的
for init; condition; post {} //原始的for循环
for condition {} //和while一样
for {} // 死循环
保留字range 可用于循环。它可以在slice 、array、 string、 channel 。range就是一个迭代器。
当被调用的时候。从循环内容中取一个键值对。基于不同的内容,range返回的东西不同。
list := []string{"a","b","c","d","e","f"}
for k,v := range list {
//循环 k为下标 v为值
}
Go 的switch 的表达式不必是常量或者整数,可以是表达式等。默认就是if-else-if-else 判断序列。
没有关键词 break 自动默认截断 如果要继续执行就使用关键词 fallthrough