Golang - 流程控制
Golang - 流程控制
1. 选择结构
if else语句:
//package 声明开头表示代码所属包
package main
import (
"io/ioutil"
"fmt" ) func main() { //常量 const filename = "abc.txt" //读取文件 contens, err := ioutil.ReadFile(filename) // nil空 if err != nil { fmt.Println(err) } else { fmt.Printf("%s\n", contens) } // ;后边直接去判断和处理了 if contens, err := ioutil.ReadFile(filename); err != nil { fmt.Println(err) } else { fmt.Printf("%s\n", contens) } }
switch语句:
//package 声明开头表示代码所属包
package main
import "fmt"
//函数传入成绩,得到级别 ABC func grade(score int) string { //定义个空串 g := "" //switch语句 switch { case score < 0 || score > 100: g = "输入错误" //隐式加了一个break,匹配到了就结束 //关键字fallthrough是继续往下跑 fallthrough case score < 60: g = "F" case score < 80: g = "C" case score < 90: g = "B" case score <= 100: g = "A" } return g } func main() { fmt.Println( grade(0), grade(59), grade(60), grade(82), grade(99), grade(100), grade(-3), ) } //F F C B A A F
2. 循环结构
for 语句:
//package 声明开头表示代码所属包
package main
import (
"fmt"
"time" ) //1.无限死循环 func for1() { for { fmt.Println("爱天台,爱日耳曼战车") //睡1秒 time.Sleep(1 * time.Second) } } //2.有限次循环 func for2() { for i := 1; i < 11; i++ { fmt.Println("爱天台,爱战车", i) //睡眠 time.Sleep(500 * time.Millisecond) } } //3.if else func for3() { for i := 1; i < 11; i++ { if i%5 == 0 { fmt.Println("爱阿根廷") } else if i%2 == 1 { fmt.Println("更爱战车") } else { fmt.Println("最爱是天台") } time.Sleep(500 * time.Millisecond) } } func main() { //for2() for3() }
range 语句:
//package 声明开头表示代码所属包
package main
import "fmt"
func main() { s := "abc" //1.接收了下标,通过下标取值 for i := range s { fmt.Printf("下标=%d,值=%c\n", i, s[i]) } //2.直接接收下标和元素值 for i, c := range s { fmt.Printf("下标2=%d,值2=%c\n", i, c) } //3.忽略下标 for _, c := range s { fmt.Printf("值=%c\n", c) } } //下标=0,值=a //下标=1,值=b //下标=2,值=c //下标2=0,值2=a //下标2=1,值2=b //下标2=2,值2=c //值=a //值=b //值=c
3. 跳转语句
break和continue
//package 声明开头表示代码所属包
package main
import "fmt"
func main() { for i :=0; i<5; i++{ if 2==i{ //break continue } fmt.Println(i) } } //0 //1 //3 //4
goto:可以跳转到指定的位置运行,注意是跳转到当前函数内
//package 声明开头表示代码所属包
package main
import "fmt"
func main() { for i :=0; i<5; i++{ fmt.Println(i) //关键字goto goto LABEL } fmt.Println("程序结束") LABEL: fmt.Println("程序over") } //0 //程序over