首页 > 其他 > 详细

Golang - 流程控制

时间:2019-04-14 10:18:14      阅读:136      评论:0      收藏:0      [点我收藏+]

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

Golang - 流程控制

原文:https://www.cnblogs.com/konghui/p/10703589.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!