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语言中的流程控制语句
79 0
|
Go C语言
Go Web编程实战(2)----流程控制语句(二)
Go Web编程实战(2)----流程控制语句(二)
93 0
|
Java Go C语言
Go Web编程实战(2)----流程控制语句(一)
Go Web编程实战(2)----流程控制语句(一)
131 0
|
Java Go JavaScript
Go基础(流程控制语句):开启Go语言之旅
流程控制语句 Go语言和Java特别相似,包括流程控制语句,主要有以下几种: for、if、else、switch、defer。
1445 0
|
1天前
|
Java 编译器 Go
探索Go语言的性能优化技巧
在本文中,我们将深入探讨Go语言的底层机制,以及如何通过代码层面的优化来提升程序性能。我们将讨论内存管理、并发控制以及编译器优化等关键领域,为你提供一系列实用的技巧和最佳实践。
|
1天前
|
Cloud Native Go API
Go语言在微服务架构中的创新应用与实践
本文深入探讨了Go语言在构建高效、可扩展的微服务架构中的应用。Go语言以其轻量级协程(goroutine)和强大的并发处理能力,成为微服务开发的首选语言之一。通过实际案例分析,本文展示了如何利用Go语言的特性优化微服务的设计与实现,提高系统的响应速度和稳定性。文章还讨论了Go语言在微服务生态中的角色,以及面临的挑战和未来发展趋势。
|
1天前
|
安全 Go 调度
探索Go语言的并发模式:协程与通道的协同作用
Go语言以其并发能力闻名于世,而协程(goroutine)和通道(channel)是实现并发的两大利器。本文将深入了解Go语言中协程的轻量级特性,探讨如何利用通道进行协程间的安全通信,并通过实际案例演示如何将这两者结合起来,构建高效且可靠的并发系统。
|
1天前
|
安全 Go 开发者
破译Go语言中的并发模式:从入门到精通
在这篇技术性文章中,我们将跳过常规的摘要模式,直接带你进入Go语言的并发世界。你将不会看到枯燥的介绍,而是一段代码的旅程,从Go的并发基础构建块(goroutine和channel)开始,到高级模式的实践应用,我们共同探索如何高效地使用Go来处理并发任务。准备好,让Go带你飞。
|
2天前
|
运维 Go 开发者
Go语言在微服务架构中的应用与优势
本文深入探讨了Go语言在构建微服务架构中的独特优势和实际应用。通过分析Go语言的核心特性,如简洁的语法、高效的并发处理能力以及强大的标准库支持,我们揭示了为何Go成为开发高性能微服务的首选语言。文章还详细介绍了Go语言在微服务架构中的几个关键应用场景,包括服务间通信、容器化部署和自动化运维等,旨在为读者提供实用的技术指导和启发。
|
2天前
|
安全 Go 调度
探索Go语言的并发之美:goroutine与channel
在这个快节奏的技术时代,Go语言以其简洁的语法和强大的并发能力脱颖而出。本文将带你深入Go语言的并发机制,探索goroutine的轻量级特性和channel的同步通信能力,让你在高并发场景下也能游刃有余。