流程控制
面向过程编程
- 自上而下的执行()
面向对象编程:让程序像人一样的思考来运行,而不是机械式的自上而下 (架构)
- 将世界抽象为一个个的对象,然后用程序来模拟这一个个的对象,然后进行一些人工化的操作实现
现实世界的逻辑
- 定义 (属性)
- 判断 (对错,导向不同的结果)
- 循环 (很多事情本质上都是在循环的) 时间(秒、时、分、日、月、年、周)
程序代码底层的本质,也和上面相同,所有编程语言都有的
- 定义 变量、常量
- 需要在程序中进行一些判断,来做出一些不同的决定 if 如果....如果条件二else if.....否则else.....
- 考分,90 + A 80 - 90 B 70-80 C 0-60 D ....
- 循环,我们希望程序不停的做一件事情 for 循环
- 服务器,我们希望程序是一直执行
- 大量计算,1 + .... + 100000000
顺序结构:自上而下运行
选择结构:满足了某些条件才会执行
- if (常用的)
- switch (也要学会使用,某些情况下可以优化代码结构)
循环结构:条件满足的情况,我们会去循环0 - N次。
- for
1、if
if a>10 {fmt.Println("大于10")
} else {fmt.Println("不大于10")
}
// if -- else
package mainimport "fmt"func main() {var score int = 90if score >= 60 {fmt.Println("及格")} else {fmt.Println("不及格")}
}package mainimport "fmt"func main() {// 判断用户密码输入是否正确// 接收用户输入// 第一次判断// 第二次输出// 第二次判断var num1 stringvar num2 stringfmt.Println("请输入密码:")// Scan() 指针对象fmt.Scan(&num1)if num1 == "123" {fmt.Printf("第一次密码正确")fmt.Println("请再次输入密码:")fmt.Scan(&num2)if num2 == "123" {fmt.Printf("第二次密码正确,登录成功")} else {fmt.Println("第二从密码错误")}} else {fmt.Println("第一次密码错误")}
}
// if -- else if -- else
package mainimport "fmt"func main() {var score int = 60if score >= 60 {if score >= 90 && score <= 100 {fmt.Println("A")} else if score >= 80 && score < 90 {fmt.Println("B")} else if score >= 70 && score < 80 {fmt.Println("C")} else {fmt.Println("D")}} else {fmt.Println("不及格")}
}
2、switch
package mainimport "fmt"func main() {var score int = 100// 通过switch来判断score// case , 后面可以写多个条件switch score {case 100, 95, 91:fmt.Println("A")case 90:fmt.Println("B")case 80, 70, 60:fmt.Println("C")default:fmt.Println("other")}// switch 是可以省略条件的,默认是 switch trueswitch{case false:fmt.Println("false")case true:fmt.Println("true")default:fmt.Println("其他")}//var flag bool//switch flag {//case score<100 :////}
}
switch 穿透
package mainimport "fmt"func main() {a := falseswitch a {// 在case中 一旦使用了 fallthrough,则会强制执行下一个case语句case false:fmt.Println("1")fallthroughcase true:fmt.Println("2")fallthroughcase true:fmt.Println("3")fallthroughcase false:fmt.Println("4")fallthroughcase false:}
}
分支结构小结
-
if
-
if ... else if
-
if .... else
-
if ... else if ... else if ... else if... else
-
swtich - case
-
swtich - case - fallthrough
-
swtich - case - default
3、for
package mainimport "fmt"func main() {//for 参数1:从哪里开始 参数2:到哪里结束 参数3:控制这个循环条件变量(自增和自减)for i := 0; i < 10; i++ {fmt.Println(i)}
}
package mainimport "fmt"
// 求1-10的和
func main() {var sum int = 0for i := 0; i <= 10; i++ {sum += i}fmt.Println(sum)
}
(1)、探究for循环
package mainimport "fmt"// 探究for循环 init:起始值 end:结束值 condition:条件变量
func main() {i := 0// for 循环可以直接// 在for循环中定义的变量,作用域就只在 for循环内,外面是无法调用的// for + 结束for条件就可以跑起来for i <= 5 {i++}fmt.Println(i)
}
package mainimport ("fmt"
)// 探究for循环 init:起始值 end:结束值 condition:条件变量
func main() {// 没有起始值、没有结束... 无限循环,死循环, 不要在开发中写这种代码。会内存溢出for {fmt.Println("hello,world")}
}
(4)、终止循环
break : 结束整个循环,立即停止
continue :结束当前这次循环,继续进行下一次循环
package mainimport "fmt"func main() {for i := 1; i <= 10; i++ {if i == 5 {//breakcontinue // 到这里就结束了当次循环,不会向下了,继续从头开始}fmt.Println(i)}}