Golang学习之流程控制
流程控制
Go语言中常用的流程控制有if和for,而switch和goto是为了简化代码,降低重复代码而扩展的流程控制。
if……else
func main() {
var num = 10
if num == 10 {
fmt.Println("hello == 10")
} else if num > 10 {
fmt.Println("hello > 10")
} else {
fmt.Println("hello < 10")
}
}
注意这种写法,num2是局部变量
if num2:= 10; num2>=10 {
fmt.Println("hello >=10")
}
for循环结构
基本格式
for 初始语句; 条件表达式; 结束语句 {
循环体
}
在Go语言中,没有while语句,可以通过for来代替
for {
循环体
}
for循环可以通过break、goto、return、panic等语句退出循环
for …… range 键值循环
for range循环结构用于遍历数组,切片,字符串,Map及通道,其中
- 数组、切片、字符串返回索引和值
- map返回键和值
- 通道channel只返回通道内的值
遍历字符串
var str = "你好golang"
for key, value := range str {
fmt.Printf("%v - %c ", key, value)
//0 - 你 3 - 好 6 - g 7 - o 8 - l 9 - a 10 - n 11 - g
}
遍历切片(数组)
var array = []string{"php", "java", "node", "golang"}
for index, value := range array {
fmt.Printf("%v %s ", index, value)
}
//0 php 1 java 2 node 3 golang
switch case 结构
用switch语句可方便的对大量的值进行条件判断
eg := ".a"
switch eg {
case ".h": {
fmt.Println(".h")
break
}
case ".d": {
fmt.Println(".d")
break
}
case ".j": {
fmt.Println(".j")
}
default: {
fmt.Println("其它后缀")
}
}
// 其他后缀
switch的另外一种写法
switch eg := ".a"; eg {
case ".h": {
fmt.Println(".h")
break
}
case ".d": {
fmt.Println(".d")
break
}
case ".j": {
fmt.Println(".j")
}
default: {
fmt.Println("其它后缀")
}
}
同时一个分支可以有多个值
eg := ".t"
switch eg {
case ".h": {
fmt.Println(".h")
break
}
case ".t",".d": {
fmt.Println("传递文档")
break
}
case ".j": {
fmt.Println(".j")
}
default: {
fmt.Println("其它后缀")
}
}
在golang中,break可以不写,也能够跳出case,而不会执行其它的
break:跳出循环
- 用于循环语句中跳出循环,并开始执行循环之后的语句
- break在switch(开关语句)中在执行一条case后跳出语句的作用
- 在多重循环中,可以用标号label标出想break的循环
goto:跳转到指定标签
goto 语句通过标签进行代码间的无条件跳转
var n = 20
if n > 24 {
fmt.Println("成年人")
} else {
goto lable3
}
fmt.Println("aaa")
fmt.Println("bbb")
lable3:
fmt.Println("ccc")
fmt.Println("ddd")
// ccc ddd

浙公网安备 33010602011771号