1.条件
if/else
package main import "fmt" func main() { var a int = 521 if a == 521 { fmt.Println("我爱你") } else { fmt.Println("我不爱你") } } -------------------------- 输出:我爱你
switch-case
switch var1 { case val1: ... case val2: ... default: ... }
select 语句
select 随机执行一个可运行的 case。如果没有 case 可运行,它将阻塞,直到有 case 可运行。一个默认的子句应该总是可运行的。
select { case communication clause : statement(s); case communication clause : statement(s); /* 你可以定义任意数量的 case */ default : /* 可选 */ statement(s); }
以下描述了 select 语句的语法:🌭
每个 case 都必须是一个通信
所有 channel 表达式都会被求值
所有被发送的表达式都会被求值
如果任意某个通信可以进行,它就执行,其他被忽略。
如果有多个 case 都可以运行,Select 会随机公平地选出一个执行。其他不会执行。
否则:
如果有 default 子句,则执行该语句。
如果没有 default 子句,select 将阻塞,直到某个通信可以运行;Go 不会重新对 channel 或值进行求值。
2.循环语句
for 循环是一个循环控制结构,可以执行指定次数的循环。
实例1:计算 1 到 10 的数字之和😉
package main import "fmt" func main() { sum := 0 for i := 0; i <= 10; i++ { sum += i } fmt.Println(sum) // 55 }
实例2:无限循环🥞
package main import "fmt" func main() { sum := 0 for { sum += 1 } fmt.Println(sum) }
要停止无限循环,可以在命令窗口按下ctrl-c 。
实例3:For-each range 循环🎶
package main import ( "fmt" ) func main() { strings := []string{"imustctf", "wode"} for i, s := range strings { fmt.Println(i, s) // 0 imustctf // 1 wode } }
实例4:类似的while循环,在 sum 小于 10 的时候计算 sum 自相加后的值😎
package main import "fmt" func main() { sum := 1 for sum <= 10 { sum += sum } fmt.Println(sum) // 16 }
3.函数
实例1:函数传入两个整型参数 num1 和 num2,并返回这两个参数的最大值🙌
package main import "fmt" func max(num1, num2 int) int { // 声明局部变量 var result int if num1 > num2 { result = num1 } else { result = num2 } return result } func main() { var a int = 100 var b int = 200 res := max(a, b) fmt.Println(res) // 200 }
实例2:函数返回多个值🥯
package main import "fmt" func swap(x, y string) (string, string) { return y, x } func main() { a, b := swap("a", "b") fmt.Println(a, b) // b a }
实例3:引用传递指针参数🙌
package main import "fmt" func swap(x *int, y *int) { var temp int temp = *x /* 保存 x 地址上的值 */ *x = *y /* 将 y 值赋给 x */ *y = temp /* 将 temp 值赋给 y */ } func main() { a, b := 100, 200 fmt.Println(a, b) // 100 200 swap(&a, &b) fmt.Println(a, b) // 200 100 }