go流程控制语句

简介: go流程控制语句

7、流程控制

7.1、if语句

if条件判断基本写法

Go语言中if条件判断的格式如下:

if 表达式1 {
    分支1
} else if 表达式2 {
    分支2
} else{
    分支3
}
package main

import "fmt"

// if条件判断
func main() {

    age := 19

    if age > 18{
        fmt.Println("你成年了")
    } else{
        fmt.Println("你没成年,小屁孩")
    }
    // 多个条件判断
    if age > 18{
        fmt.Println("你成年了")
    } else if age > 30{
        fmt.Println("可以去世了")
    } else{
        fmt.Println("太老了")
    }

    if age := 19; age >18{
        fmt.Println("太大了")
    }else{
        fmt.Println("太大了")
    }

}

7.2、for 语句

Go 语言中的所有循环类型均可以使用for关键字来完成。

for循环的基本格式如下:

for 初始语句;条件表达式;结束语句{
    循环体语句
}
package main

import "fmt"

// for循环
func main() {

    // 基本格式
    for i := 0;i < 10;i++{

        fmt.Println(i)
    }
    // 变种1
    var i = 5
    for ; i < 10;i++{
        fmt.Println(i)
    }
    // 变种2 -- 死循环
    var a = 5
    for a < 10{
        fmt.Println(a)
    }
    // 无限循环
    for{
        fmt.Println("你是傻逼")
    }
}

7.3、for range(键值循环)

Go语言中可以使用for range遍历数组、切片、字符串、map 及通道(channel)。 通过for range遍历的返回值有以下规律:

  1. 数组、切片、字符串返回索引和值。
  2. map返回键和值。
  3. 通道(channel)只返回通道内的值。
for key, val := range coll {
    ...
}

s := "hello world"
    for i, v := range s{
        fmt.Printf("%d %c\n",i,v)
    }

7.4、switch语句

不需要用break
package main

import "fmt"

// switch
func main() {
    fintal := 3
    switch fintal {
    case 1:
        fmt.Printf("%d",fintal)
    case 2:
        fmt.Printf("%d",fintal)
    case 3:
        fmt.Printf("%d",fintal)
    default:
        fmt.Println("都没有")
    }
}

fallthrough关键字

为了兼容c语言
package main

import "fmt"

func main() {

    switch n:=3;n {
    case 1:
        fmt.Println("1")
    case 2:
        fmt.Println("2")
    case 3:
        fmt.Println("3")
        // 还会往下执行代码
        fallthrough
    case 4:
        fmt.Println("等于4")
    default:
        fmt.Println("吊毛重新输入")
    }
}

执行结果有4,是因为有fallthrough

7.5、goto(跳转到指定标签)

普通跳转
package main

import "fmt"

func main() {
    var breakFlag bool
    for i := 0; i < 10; i++ {
        for j := 0; j < 10; j++ {
            if j == 2 {
                // 设置退出标签
                breakFlag = true
                break
            }
            fmt.Printf("%v-%v\n", i, j)
        }
        // 外层for循环判断
        if breakFlag {
            break
        }
    }
}
goto实现
package main

import "fmt"

func main() {
    for i := 0; i < 10; i++ {
        for j := 0; j < 10; j++ {
            if j == 2 {
                // 设置退出标签
                goto breakTag

            }
            fmt.Printf("%v-%v\n", i, j)
        }

    }
    breakTag:
        fmt.Println("结束for循环")

}
相关文章
Go语言中的流程控制语句
Go语言中的流程控制语句
135 0
|
Go C语言
Go Web编程实战(2)----流程控制语句(二)
Go Web编程实战(2)----流程控制语句(二)
217 0
|
Java Go C语言
Go Web编程实战(2)----流程控制语句(一)
Go Web编程实战(2)----流程控制语句(一)
188 0
|
Java Go JavaScript
Go基础(流程控制语句):开启Go语言之旅
流程控制语句 Go语言和Java特别相似,包括流程控制语句,主要有以下几种: for、if、else、switch、defer。
1573 0
|
2月前
|
存储 安全 Java
【Golang】(4)Go里面的指针如何?函数与方法怎么不一样?带你了解Go不同于其他高级语言的语法
结构体可以存储一组不同类型的数据,是一种符合类型。Go抛弃了类与继承,同时也抛弃了构造方法,刻意弱化了面向对象的功能,Go并非是一个传统OOP的语言,但是Go依旧有着OOP的影子,通过结构体和方法也可以模拟出一个类。
206 1
|
10月前
|
运维 监控 算法
监控局域网其他电脑:Go 语言迪杰斯特拉算法的高效应用
在信息化时代,监控局域网成为网络管理与安全防护的关键需求。本文探讨了迪杰斯特拉(Dijkstra)算法在监控局域网中的应用,通过计算最短路径优化数据传输和故障检测。文中提供了使用Go语言实现的代码例程,展示了如何高效地进行网络监控,确保局域网的稳定运行和数据安全。迪杰斯特拉算法能减少传输延迟和带宽消耗,及时发现并处理网络故障,适用于复杂网络环境下的管理和维护。
|
4月前
|
Cloud Native 安全 Java
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
299 1
|
4月前
|
Cloud Native Go API
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
401 0
|
4月前
|
Cloud Native Java Go
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
261 0
|
4月前
|
Cloud Native Java 中间件
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
230 0