编程语言3、分支与循环-GOLANG
xiu分支
if分支
生活中我们会遇到一些判断的情况,比如你考了80分以上回家会有奖励,考了60分以下回家会挨打。某个影视作品开了会员你才可以看。针对这些情况在代码里我们配合布尔类型,采用分支进行判断
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| package main
import ( "fmt" )
func main() {
name := "xiu" score := 99
if score >= 80 { fmt.Println(name, "回家有奖品") } else if score >= 60 && score < 80 { fmt.Println(name, "回家可以正常吃饭") } else { fmt.Println(name, "回家要挨打!!") }
}
|
获取键盘输入来自定义姓名与成绩
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| func main() {
var name string var score int
fmt.Println("请输入学生姓名:") fmt.Scanln(&name) fmt.Println("请输入学生成绩:") fmt.Scanln(&score)
if score >= 80 { fmt.Println(name, "回家有奖品") } else if score >= 60 && score < 80 { fmt.Println(name, "回家可以正常吃饭") } else { fmt.Println(name, "回家要挨打!!") }
}
|

switch分支
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| package main
import ( "fmt" )
func main() {
var name string var score int
fmt.Println("请输入学生姓名:") fmt.Scanln(&name) fmt.Println("请输入学生成绩:") fmt.Scanln(&score) switch score { case 100: fmt.Println(name, "回家有奖品") case 79: fmt.Println(name, "回家正常吃饭") default: fmt.Println(name, "回家挨打") }
}
|
switch语句适合匹配具体的值,某些情况不适用,以下是错误逻辑示范,代码正常运行,但是程序明显不合理

循环
在许多业务场景下我们需要让某一块代码重复执行,比如提供一个功能,当用户输入一个0-100的整数,程序会把小于这个数字的所有数字相加(不包括这个数字本身),那我们想想如何实现,通过if判断想想就头皮发麻,这个时候我们就可以引入循环
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| package main
import ( "fmt" )
func main() {
var number int
fmt.Println("请输入1-100的整数:") fmt.Scanln(&number) sum := 0 for i := 0; i < number; i++ { sum += i } fmt.Println("和为:", sum) }
|


看上面这张图不难看出程序还是有bug的,比如我们输入了101,超出了提示的100,但是依旧执行了,其实只需要加个if判断即可,这种情况在开发里时不时出现,无害bug,并不影响程序正常功能,很多时候抱着多一事不如少一事的念头可能不会修复,而我们渗透测试人员要有意识,这个小bug是否可能配合其他漏洞达到一些不可告人的目的,这也是我们这个职业的主要工作内容
猜数字小游戏
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| package main
import ( "fmt" "math/rand" )
func main() {
var number int var num = rand.Intn(101) for true { fmt.Println("[1-100]") fmt.Println("请输入您猜的数字:") fmt.Scanln(&number)
if num == number { fmt.Println("您猜对了") break } else if number > num { fmt.Println("您猜大了") } else { fmt.Println("您猜小了") } }
}
|