分支结构
package mainimport ("fmt""strconv"
)/*
1.顺序结构
2.分支结构
3.循环结构
*//*
if 条件1 {// 条件1为真时执行的代码
} else if 条件2 {// 条件1为假但条件2为真时执行的代码
} else {// 所有条件均为假时执行的代码
}一种特殊的条件分支结构if statement;条件{执行语句}
*/
func main() {if v, e := strconv.Atoi("abc"); e != nil {fmt.Println("转换失败", e)} else {fmt.Println("转换成功", v)}
}
switch 接收用户从键盘输入的成绩,输出相应的成绩等级
package mainimport ("fmt""strconv"
)/*
switch{
case 变量范围1:执行语句1case 变量范围2:执行语句2default:执行语句3}
*/
func main() {//接收用户从键盘输入的成绩,输出相应的成绩等级var score intfmt.Println("请输入成绩")fmt.Scan(&score)switch {case score < 60:fmt.Println("不及格")case score < 90:fmt.Println("良好")default:fmt.Println("优秀")}
}
switch 登录选择界面
package mainimport ("fmt"
)func main() {var choice intfmt.Println("please input your choice:")fmt.Scan(&choice)switch choice {case 1:fmt.Println("选择了登录")case 2:fmt.Println("选择了注册")default:fmt.Println("输入有误")}}
循环结构
for循环
package mainimport ("fmt"
)func main() {for i := 0; i < 10; i++ {fmt.Println(i)}//第二种方法 i := 0for i < 10 {fmt.Println(i)i++}
}
类似while循环
package mainimport ("fmt"
)func main() {var choice stringfor choice != "quit" {fmt.Println("请输入你的选择:")fmt.Scan(&choice)}
}
range
package mainimport ("fmt"
)func main() {for k, v := range "xyz" {fmt.Printf("key:%d,value:%c\n", k, v) //key是索引,value是字符-->key:0,value:xfmt.Println("key:", k, "value:", v) //key是索引,value是字符-->key: 0 value: 120}
}
死循环
package mainimport ("fmt"
)func main() {for {//无限死循环 可以通过某些条件判断 用break跳出循环}
}
break 、continue
package mainimport ("fmt"
)func main() {//break --》跳出本次循环//continue --》跳过本次循环,继续下一次循环for k, v := range "xyz" {fmt.Println("外层循环:", k, string(v))for m, n := range "abc" {if string(n) == "b" {//continue //跳过本次循环,继续下一次循环//一般用于后续还有代码要执行,跳过本次循环break //跳出内层循环} else {fmt.Println("****内层循环:", m, string(n))}}}
}
题目:用户登录
接收用户名和密码输入,判断用户明是否为root,密码是否为123456
如果是,输出登录成功
输入错误,有三次重试机会,三次用完提示登录失败
package mainimport ("fmt"
)func main() {var username, password stringfor i := 0; i < 3; i++ {fmt.Println("请输入用户名:")fmt.Scan(&username)fmt.Println("请输入密码:")fmt.Scan(&password)if username == "root" && password == "123456" {fmt.Println("登录成功")break} else {fmt.Println("用户名或密码错误,请重新输入,还有", 2-i, "次机会")}}if username != "root" || password != "123456" {fmt.Println("登录失败")}
}
for循环有自己的空间
for循环内创建的变量只能在循环体内使用
for循环创建的变量和父作用域的同名变量互不干涉
package mainimport ("fmt"
)var a int
func main() {//for循环有自己的空间a := 100fmt.Printf("outside a is :%d,address is %x \n", a, &a)for _, v := range "xyz" {fmt.Println("拿到的值为:", string(v))a := 1000fmt.Printf("inside a is :%d,adress is %x \n", a, &a)}
}
goto语句
package mainimport ("fmt"
)var a int
func main() {//goto语句 慎用num1 := 1
ABC:fmt.Println(num1)for num1 < 10 {num1++if num1 == 5 {goto ABC}}
}