流程控制
程序的流程控制结构一共有三种:顺序结构,选择结构,循环结构
顺序结构:从上到下,逐步执行。默认的逻辑
选择结构:条件满足某些代码才会执行
- if
- switch
- select, channel 通道使用的
循环结构:条件满足某些代码会被反复执行0-N次 - for
if
package main
import "fmt"
func main() {
// 验证密码,再次输入密码
var a,b int
var pwd int = 20230911
// 用户的输入
fmt.Print("请输入密码:")
fmt.Scan(&a)
// 验证密码输入是否正确
if a == pwd {
fmt.Print("请再次输入密码:")
fmt.Scan(&b)
if b == pwd {
fmt.Println("登录成功了")
} else{
fmt.Println("登录失败,第二次输入密码错误")
}
} else {
fmt.Println("登录失败,密码错误")
}
}
switch | fallthrough 穿透
package main
import "fmt"
func main() {
var score int = 70
switch score {
case 90:
fmt.Println("A")
case 80:
fmt.Println("B")
case 70:
fmt.Println("C")
fallthrough // case穿透,不管下一个条件满不满足都会执行;需要利用 break 防止穿透
default:
fmt.Println("D")
}
// switch 默认的条件是 bool = true
// switch {}
}
for
package main
import "fmt"
func main() {
var sum int = 0
// for 起始值:循环条件:控制变量自增或自减
// for : 循环条件 === 需要在内部控制条件
// for {} 无线循环
// 计算 1 到 10 和
for i:=1; i<=10; i++ {
sum = sum + i
}
fmt.Println(sum)
}
5*5 的方阵
package main
import "fmt"
func main() {
for i:=1; i<=5; i++ {
for j:=1; j<=5; j++ {
fmt.Print("*")
}
fmt.Println("")
}
}
99 乘法表
package main
import "fmt"
func main() {
for i:=1; i<=9; i++ {
// for j:=1; j<=9; j++ {
// if j < i {
// fmt.Printf("%d*%d=%d",i,j,i*j)
// }
// }
for j:=1; j<=i; j++ {
fmt.Printf("%d * %d = %d ",i,j,i*j)
}
fmt.Println("")
}
}
break 和 continue
- break 结束当前整个循环
- continue 结束当次循环
遍历 string
Go 中的字符串是一个字节的切片,可以通过将其内容封装在 “” 中来创建字符串,Go中的字符串是 Unicode 兼容的,并且是 UTF-8编码。
字符串是一些字节的集合。
package main
import "fmt"
func main() {
str := "hello"
// fmt.Print(str)
// fmt.Println("字符串长度为:",len(str))
// fmt.Print("%c", str[2])
// for i:=0; i< len(str) ; i++ {
// fmt.Printf("%c\n",str[i])
// }
for i,v:= range str {
fmt.Print(i)
fmt.Printf("%c\n",v)
}
// string 是不能修改的
str[2] = "A" // .\hello.go:21:2: cannot assign to str[2] (neither addressable nor a map index expression)
fmt.Printf("%c\n",str[2])
}