三:go流程控制

流程控制

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

顺序结构:自上而下的逐行执行

选择结构:选择条件满足的代码执行

if

swich

select

循环结构:

for

if语句

条件语句,通过测试调节判断是否ture来决定是否指定语句,并在条件false的情况在执行另外的语句

 

if条件语句

package main

import "fmt"

func main() {
   var a int = 15
   if a > 20 {
      fmt.Println("a>20")
   }
   if a > 10 {
      fmt.Println("a>10")
   }
    //输出结果:a>10
}

if else语句

package main

import "fmt"

func main() {
    //定义一个分数为90
   var score int
   fmt.Println("请输入一个数:")
   fmt.Scan(&score)
   //设置score>=90 优秀
   //   score>=60 良好
   //   score <60 不及格
   if score >= 90 {
      fmt.Println("优秀")
   } else if score >= 60 {
      fmt.Println("良好")
   } else {
      fmt.Println("不及格")
   }
}

if嵌套语句

package main

import "fmt"

// if嵌套
func main() {
	//	验证密码
	var x, y, pwd int
	pwd = 20221112
	fmt.Print("请输入密码:")
	fmt.Scanln(&x)

	if x == pwd {
		fmt.Print("请再次输出密码:")
		fmt.Scanln(&y)
		if y == pwd {
			fmt.Println("密码验证成功")
		}
	} else {
		fmt.Println("密码验证失败")
	}
}

swich语句

基于不同条件匹配不通动作,每一个case分支都是唯一的,从上至下逐一测试,知道匹配为止

自上而下匹配,直到找到匹配项,匹配项后面不需要在加break。switch 默认情况下case最后自带 break语句

package main

import "fmt"

var score int = 66

func main() {
	switch score {
	case 90:
		println("A")
	case 80:
		println("B")

	case 70, 60, 50:
		println("C")
	default:  //条件不满足时,执行default语句
		fmt.Println("D")

	}
}

示例二

package main

import "fmt"

func main() {
	var score int
	fmt.Printf("请输入成绩")
	fmt.Scanln(&score)

	switch {
	case score >= 90:
		fmt.Println("您的成绩为优秀")
	case score >= 60 && score < 90:
		fmt.Println("您的成绩为良好")
	case score < 60 && score > 0:
		fmt.Println("您的成绩为不及格")
		//	当所有条件不满足时,执行default语句
	default:
		fmt.Println("查询不到您的成绩")

	}

}

fallthrough贯穿,直通

如果我们需要执行后面的case,可以使用fallthrough穿透case使用fallthrough会强制执行后面的case语句,fallthrough不会判断下一套表达式是否为ture或false

package main

import "fmt"

func main() {

	var a bool = false
	switch a {

	case false:
		fmt.Println("case的条件是false")
		fallthrough
	case true:
		println("case的条件是ture")

	}

}

我们使用暴力穿透影响我们程序,我么可以使用break跳出

package main

import "fmt"

func main() {
	var a bool = false
	switch a {
	case false:
		fmt.Println("1,case条件为false")
		fallthrough
	case true:
		if a == false {
			break //终止穿透
		}
		fmt.Println("2,case条件为true")

	}
	//输出结果:1,case条件为false
}

for循环

for是一个循环结构,可以执行指定次数的循环

package main

import (
	"fmt"
)

func main() {

	sum := 0
	//for的起始条件,for的范围,for自增还是自减
	for i := 1; i <= 10; i++ {
		sum = sum + i

		fmt.Println(i)
	}
	fmt.Println(sum)

}

练习1

package main

import "fmt"

/* 打印一个方阵
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
 */
func main() {
	for j := 0; j < 5; j++ {
		for i := 0; i < 5; i++ {
			fmt.Print("* ")
		}
		fmt.Println()
	}
}

练习2

package main

import "fmt"

func main() {
	//打印9列
	for j := 1; j <= 9; j++ {

		//打印9行 i <= j逐级递减
		for i := 1; i <= j; i++ {
			//Printf字符编排  一个%d对应一个值
			fmt.Printf("%d*%d=%d ", i, j, i*j)
		}
		//输出完每一行换行
		fmt.Println()
	}

}

break 结束当前整个循环

package main

import "fmt"

func main() {

	for i := 1; i <= 9; i++ {

		if i == 5 {
			break
		}
		fmt.Println(i)
	}

}

continue结束当次循环

package main

import "fmt"

func main() {
	//continue 结束当次循环
	fmt.Println("=======================")
	for i := 0; i < 9; i++ {
		if i == 5 {  //如果等于5直接跳过,从6开始执行,直接循环结束
			continue
		}
		fmt.Println(i)
	}
}

遍历string

package main

import "fmt"

func main() {
	str := "hello,xuexiangban"
	fmt.Println(str)

	//输出字符串的长度 len
	fmt.Println("字符串的长度:", len(str))

	// 获取指定的字节 但这里输出的是ascii值 h-104
	fmt.Println(str[0])
	fmt.Printf("获取指定的字节:%c", str[0])

	// 遍历字符串
	for i := 0; i < len(str); i++ {
		fmt.Printf("%c/n", str[i])
	}
	fmt.Println()

	// for range循环,遍历数组,切片

	for i, i2 := range str {
		fmt.Print(i)
		fmt.Printf("%c", i2)
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值