Python转Go学习之路篇4-基础知识
原创
©著作权归作者所有:来自51CTO博客作者山南溪北的原创作品,请联系作者获取转载授权,否则将追究法律责任
控制结构
程序执行从本质上来说就是两种模式: 顺序和跳转
- 顺序就是按照程序指令在存储器上的存放顺序逐条执行
- 跳转就是遇到跳转指令就跳转到某处继续线性执行
if 语句
- if 语句后面的条件判断子句不需要用小括号
- {必须放在行尾,和 if 或 if else 放在一行
- if 后面可以带简单的初始化语句,分号分隔,该简单语句声明的变量作用域整个 if 语句块,包括后面的 if else 或者 else 分支
- go 语言没有条件运算符
- if 分支语句遇到 return 后直接返回
package main
import "fmt"
func main() {
x := 1
y := 10
if x < y {
fmt.Println("if简单语句执行成功")
}
if z := 101; z > y {
fmt.Println("if初始化语句声明变量z")
}
}
switch 语句
switch 语句会根据传入的参数检测并执行符合条件的分支
其他特点和 if 语句基本一致
支持 default 语句
package main
import "fmt"
func main() {
score := 85
switch {
case score >= 90:
fmt.Println("90分以上得分A")
case score >= 80:
fmt.Println("80分以上得分B")
case score >= 70:
fmt.Println("70分以上得分C")
}
}
for 语句
for 循环语句
支持对数组、切片、字符串、map 和通道的访问
package main
import "fmt"
func funcDemo(args ...int) {
for i := 0; i < len(args); i++ {
fmt.Println(i, args[i])
}
// range 默认返回两个值,下标和值类似python的enumerate
for index, value := range args {
fmt.Println(index, value)
}
// for 循环后面为空则表示死循环
//for {
//
//}
//对于 map 类型来说,for range 遍历时,key 和 value 分别代表 map 的索引键 key 和索引对应的值,
//一般被称为 map 的键值对,因为它们是一对一对出现的,下面的代码演示了如何遍历 map。
m := map[string]int{
"hello": 100,
"world": 200,
}
for key, value := range m {
fmt.Println(key, value)
}
}
func main() {
funcDemo(1, 2, 3)
//fmt.Println(key, value)
}
标签和跳转
goto、break、continue
go 语言使用标签 Label 来标识一个语句的位置、用于关键字跳转
goto 用于函数的内部的跳转,需要配合标签一起使用
goto
goto Label
- goto 只能在函数内跳转
- goto 不能跳过内部变量声明语句,这些变量在 goto 语句的标签语句处又是可见的
- goto 只能跳到统计作用域或者上层作用域,不能跳到内部作用域内的标签
break
用于函数内跳出 for、switch、select 语句的执行
- 单独使用,直接跳出 for、switch、select 语句的执行
- 配合 Label,用于跳出标签所标识的 for、switch、select 语句块的执行
continue
用于跳出 for 循环的本次迭代,跳到下一次迭代的 post 语句处执行
- 单独使用,用于跳出 for 循环的本次迭代
- 配合 Label,用于跳出标签标识的 for 循环的本次迭代,标签和 continue 必须在同一个函数内
return 和函数调用