if 分支
if else 分支结构
if格式
if 表达式1 {
分支1
} else if 表达式2 {
分支2
} else{
分支3
}
- 和python 不同的是 if后面要加上大括号来写分支程序 python是靠缩进,
- python和go 的 elif 和else if 关键字是有区别的 else if 个人觉得没有elif舒服
- 不过go编辑的时候会自动缩进,看着和python一样舒服
else if 和 else 要卸载 大括号后面 如果另起一行 会报错的
错误示范
if a > 15 {
fmt.Println("\u4f18\u79c0")
}
else if a < 10 {
fmt.Println("\u4f18\u79c0")
}
else {
fmt.Println("\u4f18\u79c0")
}
//这样 写会报错 syntax error: unexpected else, expecting
特殊写法
- 可以if里面定义变量 这样作用域就在if里面
- 还可以这样,python好像不可以这么定义
func main() {
if age := 20; age < 19 {
fmt.Println("未成年")
} else {
fmt.Println("已成年")
}
}
## 结果是 已成年
循环流程
- go 里面只有for循环 ,没有其他循环
- 标准写法
for i := 0; i < 10; i++ {
fmt.Println(i)
}
// 打印0-9
- 变种1 初始赋值可以省略,前提是前面已经复制了
var i = 5
for ; i < 10; i++ {
fmt.Println(i)
}
//结果打印0-9
- 结束语句也可以省略
var i = 5
for i < 10 {
fmt.Println(i)
i++
}
//结果打印0-9
- 无限循环
用 break goto return panic 推出循环
for {
fmt.Println("hello")
}
//无数hello
-
遍历用法 键值循环
便利类型:数组、切片、字符串、map及通道- 数组、切片、字符串 返回 索引和值
- map 返回键值对
- 通道只返回通道内容
和python的 for i in range(10)效果差不都
s := "Hello沙河"
for i, v := range s {
fmt.Printf("%d %c\t", i, v)
}
// 0 H 1 e 2 l 3 l 4 o 5 沙 8 河
- 推出for循环
用法和python一样
for i := 0; i < 10; i++ {
if i == 5 {
continue//跳过当前判断 继续执行循环
break// 跳出for循环
}
fmt.Println(i)
}
switch
简化if语句 一个变量和具体的值作比较
- 不推荐使用了 ,自动补全都没有goto关键字了
- 没有default 不会报错 运行时如果没有对应值 无反应
switch n := 3; n {
case 1:
fmt.Println("大拇指")
case 2:
fmt.Println("食指")
case 3:
fmt.Println("中指")
case 4:
fmt.Println("无名指")
case 5:
fmt.Println("小拇指")
default:
fmt.Println("无效的数字")
}
- 也可以使用判断条件 switch 判断写在case里面
n := 10
switch {
case n > 10:
fmt.Println("大于10")
case n > 100:
fmt.Println("大于100")
default:
fmt.Println(n)
}
// 结果 10
goto
跳转到指定标签位置 ,跳出多重循环使用,但是goto使用多了 影响阅读,
一般还是使用break跳出吧。
func main() {
for i := 1; i < 10; i++ {
for j := 1; j < 10; j++ {
if j == 2 {
fmt.Printf("%d,%d\n", i, j)
goto tiaochu
}
}
}
tiaochu:
fmt.Println("over")
}
//结果
//1,2
//over
本文深入探讨了Go语言中的控制流结构,包括if-else分支、for循环、switch语句和goto标签的使用方法,对比了Go与Python的语法差异,并提供了丰富的代码示例。
1058

被折叠的 条评论
为什么被折叠?



