GO控制与循环语句

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

循环语句:在不少实际问题中有许多具有规律性的重复操作,因此在程序中就需要重复执行某些语句。

以下为大多编程语言循环程序的流程图:

实例

demo1

package main
import (
	"fmt" 
)

func main() {

	//请大家看个案例[ifDemo.go]:
	//编写一个程序,可以输入人的年龄,如果该同志的年龄大于18岁,则输出 "你年龄大
	//于18,要对自己的行为负责!"

	//分析 
	//1.年龄 ==> var age int 
	//2.从控制台接收一个输入 fmt.Scanln(&age)
	//3.if判断

	// var age int
	// fmt.Println("请输入年龄:")
	// fmt.Scanln(&age)

	// if age > 18 {
	// 	fmt.Println("你年龄大于18,要对自己的行为负责!")
	// }


	//golang支持在if中,直接定义一个变量,比如下面
	if age := 20; age > 18 {
		fmt.Println("你年龄大于18,要对自己的行为负责!")
	}
	
}

demo2


package main
import (
	"fmt" 
)

func main() {

	//请大家看个案例[IfDemo2.go]:
	//编写一个程序,可以输入人的年龄,如果该同志的年龄大于18岁,则输出 “你年龄大于18,要对
	//自己的行为负责!”。否则 ,输出”你的年龄不大这次放过你了.”

	//思路分析
	//1. 年龄 ===》 var age int
	//2. fmt.Scanln接收
	//3. if --- else

	//代码
	var age int
	fmt.Println("请输入年龄:")
	fmt.Scanln(&age)

	if age > 18 {
		fmt.Println("你年龄大于18~....")
	} else {
		fmt.Println("你的年龄不大这次放过你了")
	}

}

demo3

package main
import (
	"fmt" 
)


//写一个非常简单的函数
func test(char byte) byte {
	return char + 1
}

func main() {

	// 	案例:
	// 请编写一个程序,该程序可以接收一个字符,比如: a,b,c,d,e,f,g  
	// a表示星期一,b表示星期二 …  根据用户的输入显示相依的信息.

	// 要求使用 switch 语句完成

	//分析思路
	//1. 定义一个变量接收字符
	//2. 使用switch完成
	// var key byte 
	// fmt.Println("请输入一个字符 a,b,c,d,e,f,g")
	// fmt.Scanf("%c", &key)

	// switch test(key)+1 { //将语法现象
	// 	case 'a':
	// 		fmt.Println("周一, 猴子穿新衣")
	// 	case 'b':
	// 		fmt.Println("周二,猴子当小二")
	// 	case 'c':
	// 		fmt.Println("周三,猴子爬雪山")
	// 	//...
	// 	default:
	// 		fmt.Println("输入有误...")
	// }


	// var n1 int32 = 51
	// var n2 int32 = 20
	// switch n1 {
	// 	case n2, 10, 5 :  // case 后面可以有多个表达式
	// 		fmt.Println("ok1")
	// 	case 90 : 
	// 		fmt.Println("ok2~")
		
	// }


	//switch 后也可以不带表达式,类似 if --else分支来使用。【案例演示】
	var age int = 10
	
	switch {
		case age == 10 :
			fmt.Println("age == 10")
		case age == 20 :
			fmt.Println("age == 20")
		default :
			fmt.Println("没有匹配到")
	}
	
	//case 中也可以对 范围进行判断
	var score int = 90
	switch {
		case score > 90 :
			fmt.Println("成绩优秀..")
		case score >=70 && score <= 90 :
			fmt.Println("成绩优良...")
		case score >= 60 && score < 70 :
			fmt.Println("成绩及格...")
		default :
			fmt.Println("不及格")
	}


	//switch 后也可以直接声明/定义一个变量,分号结束,不推荐
	
	switch grade := 90; { // 在golang中,可以这样写
		case grade > 90 :
			fmt.Println("成绩优秀~..")
		case grade >=70 && grade <= 90 :
			fmt.Println("成绩优良~...")
		case grade >= 60 && grade < 70 :
			fmt.Println("成绩及格~...")
		default :
			fmt.Println("不及格~")
	}

	//switch 的穿透 fallthrought
	var num int = 10
	switch num {
		case 10:
			fmt.Println("ok1")
			fallthrough //默认只能穿透一层
		case 20:
			fmt.Println("ok2")
			fallthrough
		case 30:
			fmt.Println("ok3")	
		default:
			fmt.Println("没有匹配到..")
	}
}

demo4

package main
import "fmt"

func main(){

	//使用while方式输出10句 "hello,world"
	//循环变量初始化
	var i int = 1
	for {
		if i > 10 { //循环条件
			break // 跳出for循环,结束for循环
		}
		fmt.Println("hello,world", i)
		i++ //循环变量的迭代
	}

	fmt.Println("i=", i)


	//使用的do...while实现完成输出10句”hello,ok“
	var j int = 1
	for {
		fmt.Println("hello,ok", j)
		j++ //循环变量的迭代
		if j > 10 {
			break //break 就是跳出for循环
		}
	}

	
}
package main

import (
	"fmt"
)

func main() {

	var n int = 30
	//演示goto的使用
	fmt.Println("ok1")
	if n > 20 {
		goto label1
	}
	fmt.Println("ok2")
	fmt.Println("ok3")
	fmt.Println("ok4")
label1:
	fmt.Println("ok5")
	fmt.Println("ok6")
	fmt.Println("ok7")

	//var n int = 30
	演示return的使用
	//fmt.Println("ok1")
	//if n > 20 {
	//	return
	//}
	//fmt.Println("ok2")
	//fmt.Println("ok3")
	//fmt.Println("ok4")
	//fmt.Println("ok5")
	//fmt.Println("ok6")
	//fmt.Println("ok7")
}

demo5

package main
import (
	"fmt" 
)

func main() {
	//输出10句 "你好,尚硅谷"

	// fmt.Println("你好,尚硅谷")
	// fmt.Println("你好,尚硅谷")
	// fmt.Println("你好,尚硅谷")
	// fmt.Println("你好,尚硅谷")
	// fmt.Println("你好,尚硅谷")
	// fmt.Println("你好,尚硅谷")
	// fmt.Println("你好,尚硅谷")
	// fmt.Println("你好,尚硅谷")

	// fmt.Println("你好,尚硅谷")
	// fmt.Println("你好,尚硅谷")
	// fmt.Println("你好,尚硅谷")
	// fmt.Println("你好,尚硅谷")
	// fmt.Println("你好,尚硅谷")
	// fmt.Println("你好,尚硅谷")
	// fmt.Println("你好,尚硅谷")
	// fmt.Println("你好,尚硅谷")


	// fmt.Println("你好,尚硅谷")
	// fmt.Println("你好,尚硅谷")
	// fmt.Println("你好,尚硅谷")
	// fmt.Println("你好,尚硅谷")
	// fmt.Println("你好,尚硅谷")
	// fmt.Println("你好,尚硅谷")
	// fmt.Println("你好,尚硅谷")
	// fmt.Println("你好,尚硅谷")

	//golang中,有循环控制语句来处理循环的执行某段代码的方法->for循环
	//for循环快速入门
	
	for i := 1; i <= 10; i++ {
		fmt.Println("你好,尚硅谷", i)
	}



	//for循环的第二种写法
	j := 1 //循环变量初始化
	for j <= 10 { //循环条件
		
		fmt.Println("你好,尚硅谷~", j)
		j++ //循环变量迭代
	}

	//for循环的第三种写法, 这种写法通常会配合break使用
	k := 1
	for {  // 这里也等价 for ; ; { 
		if k <= 10 {
			fmt.Println("ok~~", k)
		} else {
			break //break就是跳出这个for循环
		}
		k++
	}


	//字符串遍历方式1-传统方式
	// var str string = "hello,world!北京"
	// for i := 0; i < len(str); i++ {
	// 	fmt.Printf("%c \n", str[i]) //使用到下标...
	// }

	//字符串遍历方式1-传统方式
	var str string = "hello,world!北京"
	str2 := []rune(str) // 就是把 str 转成 []rune
	for i := 0; i < len(str2); i++ {
		fmt.Printf("%c \n", str2[i]) //使用到下标...
	}

	fmt.Println()
	//字符串遍历方式2-for-range
	str = "abc~ok上海"
	for index, val := range str {
		fmt.Printf("index=%d, val=%c \n", index, val)
	}
}

demo6

package main

import (
	"fmt"
	"math/rand"
	"time"
)

func main() {

	//我们为了生成一个随机数,还需要个rand设置一个种子.
	//time.Now().Unix() : 返回一个从1970:01:01 的0时0分0秒到现在的秒数
	//rand.Seed(time.Now().Unix())
	//如何随机的生成1-100整数
	//n := rand.Intn(100) + 1 // [0 100)
	//fmt.Println(n)

	//随机生成1-100的一个数,直到生成了99这个数,看看你一共用了几次
	//分析思路:
	//编写一个无限循环的控制,然后不停的随机生成数,当生成了99时,就退出这个无限循环==》break
	var count int = 0
	for {
		rand.Seed(time.Now().UnixNano())
		n := rand.Intn(100) + 1
		fmt.Println("n=", n)
		count++
		if (n == 99) {
			break //表示跳出for循环
		}
	}

	fmt.Println("生成 99 一共使用了 ", count)

	//这里演示一下指定标签的形式来使用 break
lable2:
	for i := 0; i < 4; i++ {
		//lable1: // 设置一个标签
		for j := 0; j < 10; j++ {
			if j == 2 {
				//break // break 默认会跳出最近的for循环
				//break lable1
				break lable2 // j=0 j=1
			}
			fmt.Println("j=", j)
		}
	}

}

demo7

package main

import "fmt"

func main() {

	//continue案例
	//这里演示一下指定标签的形式来使用
	//lable2:
	// for i := 0; i < 4; i++ {
	// 	//lable1: // 设置一个标签
	// 	for j := 0; j < 10; j++ {
	// 		if j == 2 {
	// 			continue
	// 		}
	// 		fmt.Println("j=", j)
	// 	}
	// }

here:
	for i := 0; i < 2; i++ {
		for j := 1; j < 4; j++ {
			if j == 2 {
				continue here
			}
			fmt.Println("i=", i, "j=", j)
		}
	}

}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值