加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Go 分支流程

发布时间:2020-12-16 09:20:31 所属栏目:大数据 来源:网络整理
导读:if/else 基本使用 if/else 应该是每个编程语言中都具备的基本分支结构。 需要注意的是 if||else 与 { 要放在同一行上,否则会抛出异常。 另外,当多个 else if 出现时,不同分支只会执行一个。 if 表达式1 { 分支1} else if 表达式2 { 分支2} else{ 分支3}

if/else

基本使用

   if/else应该是每个编程语言中都具备的基本分支结构。

   需要注意的是if||else{要放在同一行上,否则会抛出异常。

   另外,当多个else if出现时,不同分支只会执行一个。

if 表达式1 {
    分支1
} else if 表达式2 {
    分支2
} else{
    分支3
}

   如下,判断成绩的等级。

package main

import (
	"fmt"
)

func main() {
	var grades int8 = 82
	if grades > 90{
		fmt.Println("成绩优异")
	}else if grades > 80{
		fmt.Println("成绩不错")
	}else if grades > 60{
		fmt.Println("成绩及格")
	}else if grades > 40 {
		fmt.Println("成绩较差")
	}else{
		fmt.Println("建议退学")
	}
}

作用域

   if分支代码块具有块级作用域。我们可以在执行if时定义一个变量,该变量不能在块级作用域外使用。

   注意:只能使用短变量的声明方式

package main

import (
	"fmt"
)

func main() {

	if grades := 82; grades > 90{
		fmt.Println("成绩优异")
	}else if grades > 80{
		fmt.Println("成绩不错")
	}else if grades > 60{
		fmt.Println("成绩及格")
	}else if grades > 40 {
		fmt.Println("成绩较差")
	}else{
		fmt.Println("建议退学")
	}
}

switch/case

基本使用

   switch/case可以让上述代码变得更加简洁。

   同其他语言一样,一个switch中只能有一个defaultdefault通常放在最下面。

  

package main

import (
	"fmt"
)

func main() {
	var grades int8 = 82
	switch{
	case grades > 90 :
		fmt.Println("成绩优异")
		// 不需要进行break
	case grades > 60 :
		fmt.Println("成绩及格")
	case grades > 40:
		fmt.Println("成绩较差")
	default:
		fmt.Println("建议退学")
	}
}

作用域

   同样,switch也拥有块级作用域。我们可以在switch作用域内定义一个变量,该作用域外不能使用该变量。

package main

import (
	"fmt"
)

func main() {
	switch grades := 82; { // 注意结束的分号
	case grades > 90:
		fmt.Println("成绩优异")
		// 不需要进行break
	case grades > 60:
		fmt.Println("成绩及格")
	case grades > 40:
		fmt.Println("成绩较差")
	default:
		fmt.Println("建议退学")
	}
}

fallthrough

   fallthrough语法可以执行满足条件的case的下一个case,是为了兼容C语言中的case设计的。

  

package main

import (
	"fmt"
)

func main() {
	switch age := 18; { // 注意结束的分号
		case age < 18:
			fmt.Println("未成年")
		case age >= 18:
			fmt.Println("成年了")
			fallthrough  // 穿透,执行下一个case 无论是否为true
		case age > 30:
			fmt.Println("生活忙碌")
		default:
			fmt.Println("枯燥无味")
	}
	// 成年了
	// 生活忙碌
}

for

索引循环

   条件为true循环,条件为false则退出循环。

   下面是使用索引循环对数组进行遍历。

package main

import (
	"fmt"
)

func main() {
	var arr = [...]string{"①","②","③","④","⑥"} // 定义string数组
	for index := 0; index < len(arr); index++{
		fmt.Println(index) // 打印索引值
		fmt.Println(arr[index]) // 打印元素值
	}
}

迭代变量

   迭代变量可以在for循环的外部定义,但是必须要使用;进行占位。

package main

import (
	"fmt"
)

func main() {
	var arr = [...]string{"①","⑥"} // 定义string数组
	var index int; // int类型默认为0
	for ; index < len(arr); index++{
		fmt.Println(index) // 打印索引值
		fmt.Println(arr[index]) // 打印元素值
	}
}

while循环

   由于Go语言中没有while循环,所以while循环可以用for来进行完成。

   具体的步骤就是省略迭代变量,省略结束条件。

package main

import (
	"fmt"
)

func main() {
	var counter int
	for {
		if counter >= 5 {
			break
		}
		fmt.Printf("第%d次执行n",counter+1)
		counter++
	}
}

for/range

   普通的索引循环只能拿出索引,因此十分的不方便。此时可使用for/range,迭代变量有两个。

   第一个为索引值,第二个为元素本身。

package main

import (
	"fmt"
)

func main() {
	var arr = [...]string{"①","⑥"} // 定义string数组
	for index,element := range arr{
		fmt.Printf("索引值:%dn",index)
		fmt.Printf("元素值:%vn",element)
	}
}

退出循环

goto

   当有多层循环嵌套时,可给一个代码块指定一个标签,当执行到该标签时,跳转到标签代码块。

package main

import (
	"fmt"
)

func main() {
	for i := 0; i < 10; i++ {
		for j := 0; j < 10; j++ {
			if j == 5 {
				goto TAG
			}
			fmt.Println(j)
		}
	}
	TAG:
		fmt.Println("执行标签代码块")
		return // 结束main函数
}

break

   break用于跳过本层循环。

package main

import (
	"fmt"
)

func main() {
	for i := 0; i < 10; i++ {
		for j := 0; j < 10; j++ {
			if j == 5 {
				fmt.Println("跳过本层循环")
				break
			}
		}
		fmt.Println("执行外层循环")
		break
	}
	fmt.Println("代码执行结束")
}

continue

   continue用于跳过本次循环。

package main

import (
	"fmt"
)

func main() {
	for i := 0; i < 10; i++ {
		if i==5{
			fmt.Println("跳过本次循环")
		}else{
			fmt.Println(i)
		}
	}
	fmt.Println("代码执行结束")
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读