Go学习笔记(篇四)流程控制

流程控制

1 条件语句

GO编程语言中if的语法如下:

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

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

实例如下,用if比较两个数的大小:

package main

import "fmt"

func main() {
   var a, b int

   fmt.Scanf("%d %d", &a, &b)

   if a > b {
      fmt.Printf("%d>%d\n", a, b)
   } else if a == b {
      fmt.Printf("%d=%d\n", a, b)
   } else {
      fmt.Printf("%d<%d\n", a, b)
   }
}

关于条件语句,需要注意以下几点:

  • 布尔表达式不需要使用括号将条件包含起来;

  • 不论语句体内有几条语句,花括号{ }都是必须存在的;

  • 左花括号 { 必须与if或者else处于同一行;

  • 在if之后,布尔表达式之前,可以添加变量初始化语句,使用 ; 间隔;

  • 在具有返回值的函数中,不允许return语句出现在if……else……结构中;

2 选择语句

根据传入条件的不同,选择语句会执行不同的语句。

实例如下,判断变量中储存的数据类型:

package main

import "fmt"

func valueType(value interface{}) {

   switch i := value.(type) {
   case nil:
      fmt.Println("变量的类型是", i)
   case int:
      fmt.Println("变量的类型是int型")
   case float64:
      fmt.Println("变量的类型是float64型")
   case func(int) float64:
      fmt.Println("变量的类型是func(int)型")
   case bool:
      fmt.Println("变量的类型是bool型")
   case string:
      fmt.Println("变量的类型是string型")
   default:
      fmt.Println("未知")
   }
}

func main() {
   a := 32
   b := 32.2
   c := "32"
   d := false
   var e interface{}
   valueType(a)
   valueType(b)
   valueType(c)
   valueType(d)
   valueType(e)
}

/*
打印结果如下:
变量的类型是int型
变量的类型是float64型
变量的类型是string型
变量的类型是bool型
变量的类型是 <nil>
*/

关于条件语句,需要注意以下几点:

  • 左花括号 { 必须与switch处于同一行;

  • 条件表达式不限制为常量或者整数;

  • 单个case中,可以出现多个结果选项;

  • 不需要break来明确退出一个case;

  • 只有在case中明确添加fallthrough关键字,才会继续执行下一个case;

  • 不设定switch之后的条件表达式,这个switch结构与多个if……else……的逻辑作用等同。

3 循环语句

在GO语言编程中,循环语句只支持for关键字,不支持while和do-while结构。关键字for的基本使用方法与C/C++中非常接近,代码如下:

sum := 0
for i := 0; i < 10; i++ {
   fmt.Print(sum+i, " ")
}

在循环体中,如果条件语句永远不为false则会进行无限循环(俗称死循环)。

实例如下,数字累加至100后退出循环:

package main

import (
   "fmt"
)

func main() {
   sum := 0
   for true {
      sum++
      if sum == 100 {
         break
      }
   }
}

关于循环语句,需要注意以下几点:

  • 左花括号 { 必须与for处于同一行

  • Go语言不支持以逗号为间隔的多个赋值语句,必须使用平行赋值的方法来初始化多个变量;

  • Go语言的for循环支持continue和break来控制循环,额外提供了更高级的break,可以选择中断哪一个循环。

实例如下,在一组二维整形数组中查找某个数:

package main

import (
   "fmt"
)

func main() {

   sum := [4][7]int{
      {58, 15, 26, 35, 48, 95, 41},
      {55, 32, 15, 25, 12, 9, 253},
      {96, 21, 6, 25, 84, 25, 100},
      {8, 106, 56, 85, 37, 66, 59}}
JLoop:
   for i := 0; i < 4; i++ {
      for j := 0; j < 7; j++ {
         fmt.Print(sum[i][j], " ")
         if sum[i][j] == 12 {
            break JLoop
         }
      }
   }
}
/*
打印结果如下:
58 15 26 35 48 95 41 55 32 15 25 12 
*/

4 跳转语句

在C语言中有goto跳转语句,一般在编写小游戏时经常使用,有来处理一些条件判断。在Go语言中也有goto关键字,虽然不主张使用goto,但在一些场合下被证明是最合适的。

goto语句的语义非常简单,就是跳转到本函数内的某个标签,在这里就不进行举例了。



参考:

  1. Go 语言条件语句 | 菜鸟教程 (runoob.com)

#转载请注明出处!
快来制作你的简历吧 ,请猛戳这里→点击在线制作
宝塔服务器面板,一键全能部署及管理,送你3188元礼包。请猛戳这里→点我领取

本文标题:《Go学习笔记(篇四)流程控制》作者:xuanzhe
原文链接:https://blog.xuanzhe.club/?id=65
特别注明外均为原创,转载请注明。

分享到微信

扫描二维码

可在微信查看或分享至朋友圈。

相关文章

发表评论:
验证码

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

你好,朋友

真是美好的一天!

访客信息

  • IP: 18.119.136.235
  • 地点: United StatesOhioDublin

标签列表

站点信息

  • 文章总数:69
  • 页面总数:2
  • 分类总数:19
  • 标签总数:34
  • 评论总数:7
  • 浏览总数:147010
您好,欢迎到访网站!
忘记密码

网站分类

文章归档

歌曲 - 歌手
0:00