Golang - 流程控制

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
 
 
posted @ 2019-06-03 21:59  杨洪涛  阅读(284)  评论(0编辑  收藏  举报