@@ -27,6 +27,7 @@ Go语言快速入门
2727- [ 基本类型] ( #基本类型 )
2828- [ 常量变量] ( #常量变量 )
2929- [ 语言运算符] ( #语言运算符 )
30+ - [ 流程控制语句] ( #流程控制语句 )
3031- [ 资源导航] ( #资源导航 )
3132
3233<!-- /TOC -->
@@ -1667,6 +1668,120 @@ func main() {
16671668
16681669</ details>
16691670
1671+ ## 流程控制语句
1672+
1673+ < details>
1674+ < summary> for 循环语句</ summary>
1675+
1676+ ```go
1677+ package main
1678+ import "fmt"
1679+ func main() {
1680+ sum := 0
1681+ // 如果条件表达式的值变为 false,那么迭代将终止。
1682+ for i := 0 ; i < 10 ; i++ {
1683+ sum += i
1684+ }
1685+ fmt.Println(sum)
1686+
1687+ // 循环初始化语句和后置语句都是可选的。
1688+ // for 是 Go 的 “while”
1689+ // 基于此可以省略分号:C 的 while 在 Go 中叫做 for 。
1690+ // 如果省略了循环条件,循环就不会结束,因此可以用更简洁地形式表达死循环。
1691+ sum2 := 1
1692+ for ; sum2 < 1000 ; {
1693+ sum2 += sum2
1694+ }
1695+ fmt.Println(sum2 )
1696+ }
1697+ ```
1698+ 基本的 for 循环包含三个由分号分开的组成部分:
1699+
1700+ 1 . 初始化语句:在第一次循环执行前被执行
1701+ 1 . 循环条件表达式:每轮迭代开始前被求值
1702+ 1 . 后置语句:每轮迭代后被执行
1703+
1704+ </ details>
1705+
1706+ < details>
1707+ < summary> if 语句</ summary>
1708+
1709+ ```go
1710+ package main
1711+ import (
1712+ "fmt"
1713+ "math"
1714+ )
1715+ func sqrt(x float64 ) string {
1716+ if x < 0 {
1717+ return sqrt(-x) + "i"
1718+ }
1719+ return fmt.Sprint(math.Sqrt(x))
1720+ }
1721+ func main () {
1722+ fmt.Println(sqrt(2), sqrt(-4))
1723+ }
1724+ ` ` `
1725+
1726+ 就像 for 循环一样,Go 的 if 语句也不要求用 ( ) 将条件括起来,同时, { } 还是必须有的。
1727+
1728+ **if 的便捷语句**
1729+
1730+ ` ` ` go
1731+ package main
1732+ import (
1733+ " fmt"
1734+ " math"
1735+ )
1736+
1737+ func pow(x, n, lim float64) float64 {
1738+ if v := math.Pow(x, n); v < lim {
1739+ return v
1740+ }
1741+ return lim
1742+ }
1743+ func main () {
1744+ fmt.Println(
1745+ pow(3, 2, 10),
1746+ pow(3, 3, 20),
1747+ )
1748+ }
1749+ ` ` `
1750+
1751+ < /details>
1752+
1753+ < details>
1754+ < summary> if 和 else 语句< /summary>
1755+
1756+ ` ` ` go
1757+ package main
1758+ import (
1759+ " fmt"
1760+ " math"
1761+ )
1762+ func pow(x, n, lim float64) float64 {
1763+ if v := math.Pow(x, n); v < lim {
1764+ return v
1765+ } else {
1766+ fmt.Printf(" %g >= %g\n" , v, lim)
1767+ }
1768+ // 这里开始就不能使用 v 了
1769+ return lim
1770+ }
1771+
1772+ func main () {
1773+ // 两个 pow 调用都在 main 调用 fmt.Println 前执行完毕了。
1774+ fmt.Println(
1775+ pow(3, 2, 10),
1776+ pow(3, 3, 20),
1777+ )
1778+ }
1779+ ` ` `
1780+
1781+ 在 if 的便捷语句定义的变量同样可以在任何对应的 else 块中使用。
1782+
1783+ < /details>
1784+
16701785# # 资源导航
16711786
16721787< details>
0 commit comments