流程控制
if语句
if a > b {
fmt.Println(...)
}
//如果出现多条件判断,需要使用`&&`, `||`, 和ruby不同的是,golang不支持`and`, `or`
if a == b && b == c {
fmt.Println(...)
}
if a == b || b == c {
fmt.Println(...)
}
switch语句
golang的switch语句和ruby的截然不同:
package main
import "fmt"
func main() {
var bonus float32 = 0.0
var I float32 = 0.0
fmt.Print("输入利润:")
fmt.Scanf("%f\n", &I)
switch {
case I > 1000000: //表达式后面必须要有`:`
bonus = (I - 1000000) * 0.01
I = 1000000
fallthrough //继续执行紧跟的下一个case, ruby不支持这样做
case I > 600000:
bonus += (I - 600000) * 0.015
I = 600000
fallthrough
case I > 400000:
bonus += (I - 400000) * 0.03
I = 400000
fallthrough
case I > 200000:
bonus += (I - 200000) * 0.05
I = 200000
fallthrough
case I > 100000:
bonus += (I - 100000) * 0.075
I = 100000
fallthrough
default: //类似于ruby的`else`
bonus += I * 0.1
}
fmt.Println(bonus)
}
循环语句
golang只支持for
循环,不支持while
//类似于C语言的循环
for i := 0; i < count; i++ {
}
//无限循环
i := 0
for {
.....
i++
if i > 100 {
break
}
}
三元表达式
golang没有三元表达式,不过可以自己通过函数模仿
import "fmt"
type B bool
func main() {
fmt.Println(B(80 >= 90).F("A", "B"))
}
func (b B) F(x, y interface{}) interface{} {
if bool(b) == true {
return x
}
return y
}