课程表

Go语言课程

工具箱
速查手册

Go 语言条件语句

当前位置:免费教程 » 程序设计 » Go语言

条件语句需要开发者通过指定一个或多个条件,并通过测试条件是否为 true 来决定是否执行指定语句,并在条件为 false 的情况在执行另外的语句。

Go 语言提供了以下几种条件判断语句:

语句描述
if 语句if 语句 由一个布尔表达式后紧跟一个或多个语句组成。
if...else 语句if 语句 后可以使用可选的 else 语句, else 语句中的表达式在布尔表达式为 false 时执行。
if 嵌套语句你可以在 ifelse if 语句中嵌入一个或多个 ifelse if 语句。
switch 语句switch 语句用于基于不同条件执行不同动作。
select 语句select 语句类似于 switch 语句,但是select会随机执行一个可运行的case。如果没有case可运行,它将阻塞,直到有case可运行。

if 语句

if 语句由布尔表达式后紧跟一个或多个语句组成。

语法

Go 编程语言中 if 语句的语法如下:

  1. if 布尔表达式 {
  2. /* 在布尔表达式为 true 时执行 */
  3. }

If 在布尔表达式为 true 时,其后紧跟的语句块执行,如果为 false 则不执行。

流程图如下:

实例

  1. package main
  2.  
  3. import "fmt"
  4.  
  5. func main() {
  6. /* 定义局部变量 */
  7. var a int = 10
  8. /* 使用 if 语句判断布尔表达式 */
  9. if a < 20 {
  10. /* 如果条件为 true 则执行以下语句 */
  11. fmt.Printf("a 小于 20\n" )
  12. }
  13. fmt.Printf("a 的值为 : %d\n", a)
  14. }

在线运行实例

以上代码执行结果为:

  1. a 小于 20
  2. a 的值为 : 10

if...else 语句

if 语句 后可以使用可选的 else 语句, else 语句中的表达式在布尔表达式为 false 时执行。

语法

Go 编程语言中 if...else 语句的语法如下:

  1. if 布尔表达式 {
  2. /* 在布尔表达式为 true 时执行 */
  3. } else {
  4. /* 在布尔表达式为 false 时执行 */
  5. }

If 在布尔表达式为 true 时,其后紧跟的语句块执行,如果为 false 则执行 else 语句块。

流程图如下:

实例

  1. package main
  2.  
  3. import "fmt"
  4.  
  5. func main() {
  6. /* 局部变量定义 */
  7. var a int = 100;
  8. /* 判断布尔表达式 */
  9. if a < 20 {
  10. /* 如果条件为 true 则执行以下语句 */
  11. fmt.Printf("a 小于 20\n" );
  12. } else {
  13. /* 如果条件为 false 则执行以下语句 */
  14. fmt.Printf("a 不小于 20\n" );
  15. }
  16. fmt.Printf("a 的值为 : %d\n", a);
  17.  
  18. }

在线运行实例

以上代码执行结果为:

  1. a 不小于 20
  2. a 的值为 : 100

if 语句嵌套

你可以在 if 或 else if 语句中嵌入一个或多个 if 或 else if 语句。

语法

Go 编程语言中 if...else 语句的语法如下:

  1. if 布尔表达式 1 {
  2. /* 在布尔表达式 1 为 true 时执行 */
  3. if 布尔表达式 2 {
  4. /* 在布尔表达式 2 为 true 时执行 */
  5. }
  6. }

你可以以同样的方式在 if 语句中嵌套 else if...else 语句

实例

  1. package main
  2.  
  3. import "fmt"
  4.  
  5. func main() {
  6. /* 定义局部变量 */
  7. var a int = 100
  8. var b int = 200
  9. /* 判断条件 */
  10. if a == 100 {
  11. /* if 条件语句为 true 执行 */
  12. if b == 200 {
  13. /* if 条件语句为 true 执行 */
  14. fmt.Printf("a 的值为 100 , b 的值为 200\n" );
  15. }
  16. }
  17. fmt.Printf("a 值为 : %d\n", a );
  18. fmt.Printf("b 值为 : %d\n", b );
  19. }

在线运行实例

以上代码执行结果为:

  1. a 的值为 100 b 的值为 200
  2. a 值为 : 100
  3. b 值为 : 200

switch 语句

switch 语句用于基于不同条件执行不同动作,每一个 case 分支都是唯一的,从上直下逐一测试,直到匹配为止。。

switch 语句执行的过程从上至下,直到找到匹配项,匹配项后面也不需要再加break

语法

Go 编程语言中 switch 语句的语法如下:

  1. switch var1 {
  2. case val1:
  3. ...
  4. case val2:
  5. ...
  6. default:
  7. ...
  8. }

变量 var1 可以是任何类型,而 val1 和 val2 则可以是同类型的任意值。类型不被局限于常量或整数,但必须是相同的类型;或者最终结果为相同类型的表达式。

您可以同时测试多个可能符合条件的值,使用逗号分割它们,例如:case val1, val2, val3。

流程图:

实例

  1. package main
  2.  
  3. import "fmt"
  4.  
  5. func main() {
  6. /* 定义局部变量 */
  7. var grade string = "B"
  8. var marks int = 90
  9.  
  10. switch marks {
  11. case 90: grade = "A"
  12. case 80: grade = "B"
  13. case 50,60,70 : grade = "C"
  14. default: grade = "D"
  15. }
  16.  
  17. switch {
  18. case grade == "A" :
  19. fmt.Printf("优秀!\n" )
  20. case grade == "B", grade == "C" :
  21. fmt.Printf("良好\n" )
  22. case grade == "D" :
  23. fmt.Printf("及格\n" )
  24. case grade == "F":
  25. fmt.Printf("不及格\n" )
  26. default:
  27. fmt.Printf("差\n" );
  28. }
  29. fmt.Printf("你的等级是 %s\n", grade );
  30. }

在线运行实例

以上代码执行结果为:

  1. 优秀!
  2. 你的等级是 A

Type Switch

switch 语句还可以被用于 type-switch 来判断某个 interface 变量中实际存储的变量类型。

Type Switch 语法格式如下:

  1. switch x.(type){
  2. case type:
  3. statement(s);
  4. case type:
  5. statement(s);
  6. /* 你可以定义任意个数的case */
  7. default: /* 可选 */
  8. statement(s);
  9. }

实例

  1. package main
  2.  
  3. import "fmt"
  4.  
  5. func main() {
  6. var x interface{}
  7. switch i := x.(type) {
  8. case nil:
  9. fmt.Printf(" x 的类型 :%T",i)
  10. case int:
  11. fmt.Printf("x 是 int 型")
  12. case float64:
  13. fmt.Printf("x 是 float64 型")
  14. case func(int) float64:
  15. fmt.Printf("x 是 func(int) 型")
  16. case bool, string:
  17. fmt.Printf("x 是 bool 或 string 型" )
  18. default:
  19. fmt.Printf("未知型")
  20. }
  21. }

在线运行实例

以上代码执行结果为:

  1. x 的类型 :<nil>

select 语句

select是Go中的一个控制结构,类似于用于通信的switch语句。每个case必须是一个通信操作,要么是发送要么是接收。

select随机执行一个可运行的case。如果没有case可运行,它将阻塞,直到有case可运行。一个默认的子句应该总是可运行的。

语法

Go 编程语言中 select 语句的语法如下:

  1. select {
  2. case communication clause :
  3. statement(s);
  4. case communication clause :
  5. statement(s);
  6. /* 你可以定义任意数量的 case */
  7. default : /* 可选 */
  8. statement(s);
  9. }

以下描述了 select 语句的语法:

  • 每个case都必须是一个通信
  • 所有channel表达式都会被求值
  • 所有被发送的表达式都会被求值
  • 如果任意某个通信可以进行,它就执行;其他被忽略。
  • 如果有多个case都可以运行,Select会随机公平地选出一个执行。其他不会执行。
    否则:
    1. 如果有default子句,则执行该语句。
    2. 如果没有default字句,select将阻塞,直到某个通信可以运行;Go不会重新对channel或值进行求值。

实例

  1. package main
  2.  
  3. import "fmt"
  4.  
  5. func main() {
  6. var c1, c2, c3 chan int
  7. var i1, i2 int
  8. select {
  9. case i1 = <-c1:
  10. fmt.Printf("received ", i1, " from c1\n")
  11. case c2 <- i2:
  12. fmt.Printf("sent ", i2, " to c2\n")
  13. case i3, ok := (<-c3): // same as: i3, ok := <-c3
  14. if ok {
  15. fmt.Printf("received ", i3, " from c3\n")
  16. } else {
  17. fmt.Printf("c3 is closed\n")
  18. }
  19. default:
  20. fmt.Printf("no communication\n")
  21. }
  22. }

在线运行实例

以上代码执行结果为:

  1. no communication
转载本站内容时,请务必注明来自W3xue,违者必究。
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号