【Go编程语言】流程控制

流程控制



在这里插入图片描述


程序的流程控制结构一具有三种:顺序结构,选择结构,循环结构

在这里插入图片描述

  • 顺序结构:从上到下,逐行执行。默认的逻辑

  • 选择结构:条件满足某些代码才会执行

    • if

    • switch

    • select ,后面 channel 再讲

  • 循环结构:条件满足某些代码会被反复执行0-N次

    • for

一、if 语句

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

下图展示了程序语言中条件语句的结构:
在这里插入图片描述

package main

import "fmt"

func main() {
	// 分数
	var score int = 66

	if score >= 90 && score <= 100 {
		fmt.Println("优秀")
	} else if score >= 80 && score < 90 {
		fmt.Println("良好")
	} else if score >= 60 && score < 80 {
		fmt.Println("及格")
	} else {
		fmt.Println("不及格")
	}

}

输出
在这里插入图片描述

1.if 嵌套语句

if 布尔表社式 1 {
	/* 在布尔表达式 1 为 true 3:执行 */
	if 布尔表达式 2 {
		/* 在布尔表达式 2 true 时执行 */
	}
}
package main

import "fmt"

func main() {
	var one, two int
	// 初始密码
	var pwd int = 12345678
	// 接收用户输入密码
	fmt.Print("请输入密码:")
	fmt.Scan(&one)

	// 功能:验证密码是否正确
	if one == pwd {
		fmt.Print("请再次输入密码:")
		fmt.Scan(&two)
		if two == pwd {
			fmt.Println("登录成功")
		} else {
			fmt.Println("第二次输入密码错误,登录失败,请重新输入密码……")
		}
	} else {
		fmt.Println("输入密码错误,登录失败,请重新输入密码……")
	}

}

输出
在这里插入图片描述

二、switch 语句

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

switch var1 { 
	case test1:
		...
	case test2:
		...		
	defauIt:
		...
}

switch语句执行的过程从上至下,直到找到匹配项,匹配项后面也不需要再加 break.。switch默认情况下 case 最后自带 break 语句

package main

import "fmt"

func main() {
	var score string = "D"
	
	// 匹配
	switch score {
	case "A":
		fmt.Println("等级为A,成绩在90~100范围内")
	case "B":
		fmt.Println("等级为B,成绩在80~90范围内")
	case "C":
		fmt.Println("等级为C,成绩在60~79范围内")
	default:
		fmt.Println("等级为D,成绩在0~59范围内")

	}
	// switch 默认条件 bool = true
	switch {
	case false:
		fmt.Println("false")
	case true:
		fmt.Println("true")
	default:
		fmt.Println("其他")
	}
}

输出
在这里插入图片描述

fallthrough 贯穿,直通

switch默认情况下匹配成功后就不会执行其他case,如果我们需要执行后面的case,可以使用 fallthrough 穿透case使用 fallthrough 会强制执行后面的 case 语句,fallthrough不会判断下条case的表达结果是否为true.

package main

import "fmt"

func main() {

	a := false
	// switch 默认条件 bool = true
	switch a {
	case false:
		fmt.Println("false")
		fallthrough // case 穿透,不管下一个条件是否满足,都会执行
	case true:
		fmt.Println("true")
	default:
		fmt.Println("其他")
	}
}

输出
在这里插入图片描述

package main

import "fmt"

func main() {

	a := false
	// switch 默认条件 bool = true
	switch a {
	case false:
		fmt.Println("false")
		fallthrough // case 穿透,不管下一个条件是否满足,都会执行
	case true:
		if a == false {
			break // 终止 case 穿透
		}
		fmt.Println("true")
	default:
		fmt.Println("其他")
	}
}

输出
在这里插入图片描述

三、for 循环

在不少实际问题中有许多具有规律性的重复操作,因此在程序中就需要重复执行某些语句。for 循环是一个循环控制结构,可以执行指定次数的循环。

package main

import "fmt"

func main() {
	// for 条件的起始值;循环条件;控制变量自增或自减
	// for ;循环条件;
	// for {} 无限循环
	i := 1
	for {
		fmt.Println(i)
		i++
	}
	sum := 0
	// for 给控制变量赋值初值,循环条件给控制变量增量或减量

	// 计算 1 到 10 的数字之和
	for i := 1; i <= 10; i++ {
		// 循环体
		sum += i

	}
	fmt.Println(sum)
}

栗子:输出一个10*10的方阵

package main

import "fmt"

func main() {
	// i 控制行, j 控制列 
	for i := 0; i < 10; i++ {
		for j := 0; j < 10; j++ {
			fmt.Print("* ")
		}
		fmt.Println()
	}

}

输出
在这里插入图片描述
栗子:九九乘法表

package main

import "fmt"

func main() {
	// i 控制行, j 控制列
	for i := 1; i < 10; i++ {
		for j := 1; j <= i; j++ {
			fmt.Printf("%d*%d=%d t", j, i, j*i)
		}
		fmt.Println()
	}

}

输出
在这里插入图片描述

break 结束当前整个循环

package main

import "fmt"

func main() {

	for i := 1; i <= 6; i++ {
		if i == 4 {
			break
		}
		fmt.Println(i)
	}


}

continue 结束本次循环

package main

import "fmt"

func main() {

	for i := 1; i <= 6; i++ {
		if i == 4 {
			continue
		}
		fmt.Println(i)
	}


}

输出
在这里插入图片描述

四、string

什么是String

Go中的字符串是一个字节的切片,可以通过将其内容封装在""中来创建字符串,Go中的字符串是 Unicode 兼容的,并日是 UTF-8 编码。字符串是一些字节的集合。

package main

import "fmt"

func main() {

	str := "hello,guan"
	fmt.Println(str)

	// 获取字符串的长度 len
	fmt.Println("字符串长度为:", len(str))

	// 获取指定的字节
	fmt.Println("字节打印:", str[4])
	fmt.Printf("%c", str[4])
	fmt.Println()

	for i := 0; i < len(str); i++ {
		fmt.Printf("%cn", str[i])
	}

	// for range 循环,遍历数组、切片....
	// 返回下标和对应的值,使用这个值就行了
	for i, v := range str {
		fmt.Print(i)
		fmt.Print("--")
		fmt.Printf("%c", v)
		fmt.Println()
	}

}

在这里插入图片描述

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>