Go 语言的分支循环语句选择性较少,循环语句它只有 for 循环,平时我们在其它语言用的 while 语句、do while 语句、loop 语句它是没有的。分支语句只有 if 和 switch,也没有三元操作符。之所以是这样吧。估计也就是为了go的简洁而定的。这也就是为什么大部分人其实写的go的代码相差不大
if
先看一个最常见的 if else分支
package main
import "fmt"
func main() {
fmt.Println(sign(max(min(24, 42), max(24, 42))))
}
func max(a int, b int) int {
if a > b {
return a
}
return b
}
func min(a int, b int) int {
if a < b {
return a
}
return b
}
func sign(a int) int {
if a > 0 {
return 1
} else if a < 0 {
return -1
} else {
return 0
}
}
------------
1
代码部分借鉴与网络,说到这里,我们一般在判断大小时用a>b?a:b,但是是真的不支持。
switch 语句
func grade(score int) string {
g := ""
switch {
case score < 0 || score > 100:
panic(fmt.Sprintf("Wrong score: %d", score))
case score < 60:
g = "F"
case score < 80:
g = "C"
case score < 90:
g = "B"
case score <= 1000:
g = "A"
default:
panic(fmt.Sprintf("Wrong score: %s", score))
}
return g
}
与 java 些许不同的是,这些 case 里面不用写 break
switch 还可以使用 if…else 作为 case 条件
有,panic是个关键字,抛出异常,相当于new throw.分支就讲到这,
对于for的话,因为没有do while这些,所以for在go中的作用很大。
package main
import "fmt"
func main() {
for i := 0; i < 10; i++ {
fmt.Println("hello world!")
}
}