Golang深入浅出之-Go语言流程控制:if、switch、for循环详解

简介: 【4月更文挑战第21天】本文介绍了Go语言中的流程控制语句,包括`if`、`switch`和`for`循环。`if`语句支持简洁的语法和初始化语句,但需注意比较运算符的使用。`switch`语句提供多分支匹配,可省略`break`,同时支持不带表达式的形式。`for`循环有多种形式,如基本循环和`for-range`遍历,遍历时修改原集合可能导致未定义行为。理解并避免易错点能提高代码质量和稳定性。通过实践代码示例,可以更好地掌握Go语言的流程控制。

流程控制语句是任何编程语言中不可或缺的一部分,它们决定了程序执行的逻辑走向。在Go语言中,ifswitchfor循环构成了丰富的流程控制体系。本文将深入浅出地解析这三种语句的用法、特点以及常见问题与易错点,并通过代码示例进行演示。
image.png

一、If语句

基本形式

Go语言中的if语句简洁明了,无需使用括号包裹条件表达式:

package main

import "fmt"

func main() {
   
   
    score := 85

    if score >= 90 {
   
   
        fmt.Println("优秀")
    } else if score >= 80 {
   
   
        fmt.Println("良好")
    } else {
   
   
        fmt.Println("一般")
    }
}

初始化语句

if语句可以包含一个初始化语句,在条件判断前执行:

package main

import "fmt"

func main() {
   
   
    if score := calculateScore(); score >= 90 {
   
   
        fmt.Println("优秀")
    } else {
   
   
        fmt.Println("低于优秀")
    }
}

func calculateScore() int {
   
   
    // 计算分数逻辑...
    return 8½
}

易错点:忘记在条件判断中使用比较运算符,导致编译错误。确保条件表达式正确使用比较运算符(如==><等)。

二、Switch语句

基本形式

Go语言的switch语句支持多分支匹配,且在匹配成功后无需使用break语句跳出:

package main

import "fmt"

func main() {
   
   
    day := "Monday"

    switch day {
   
   
    case "Monday":
        fmt.Println("Start of the week")
    case "Friday":
        fmt.Println("End of the work week")
    default:
        fmt.Println("Another day")
    }
}

多个case匹配同一处理逻辑

使用逗号分隔多个case标签,实现多个值共享同一处理逻辑:

package main

import "fmt"

func main() {
   
   
    grade := 'B'

    switch grade {
   
   
    case 'A', 'A+':
        fmt.Println("Excellent")
    case 'B', 'B+', 'B-':
        fmt.Println("Good")
    default:
        fmt.Println("Needs improvement")
    }
}

不带表达式的switch

switch语句可以不带表达式,此时相当于多个if...else if...else的组合:

package main

import "fmt"

func main() {
   
   
    score := .png

    switch {
   
   
    case score > 90:
        fmt.Println("优秀")
    case score >= 80 && score <= 90:
        fmt.Println("良好")
    default:
        fmt.Println("一般")
    }
}

易错点:忘记在case标签后添加冒号,导致编译错误。确保每个case标签后紧跟一个冒号。

三、For循环

基本形式

Go语言的for循环有多种书写方式,最常见的是带初始化、条件判断和后置语句的形式:

package main

import "fmt"

func main() {
   
   
    for i := 0; i < 5; i++ {
   
   
        fmt.Println(i)
    }
}

For-range遍历

for-range结构专门用于遍历数组、切片、字符串、映射或通道:

package main

import "fmt"

func main() {
   
   
    fruits := []string{
   
   "apple", "banana", "orange"}

    for index, fruit := range fruits {
   
   
        fmt.Printf("Index: %d, Fruit: %s\n", index, fruit)
    }
}

易错点:在for-range循环中修改被遍历的切片或数组,可能导致未定义行为。若需在遍历过程中修改集合,应使用临时变量或副本。

总结,深入理解并熟练运用Go语言的ifswitchfor循环语句,能够帮助开发者编写出结构清晰、逻辑严谨的程序。在实践中注意避免上述易错点,如忘记使用比较运算符、遗漏case标签后的冒号以及在for-range循环中直接修改集合,将有助于提升代码质量与程序稳定性。通过练习上述代码示例,你对Go语言流程控制的理解和应用将更加得心应手。

目录
相关文章
|
17天前
|
Java 编译器 Go
【Golang】(1)Go的运行流程步骤与包的概念
初次上手Go语言!先来了解它的运行流程吧! 在Go中对包的概念又有怎样不同的见解呢?
56 4
|
17天前
|
Java 编译器 Go
【Golang】(5)Go基础的进阶知识!带你认识迭代器与类型以及声明并使用接口与泛型!
好烦好烦好烦!你是否还在为弄不懂Go中的泛型和接口而烦恼?是否还在苦恼思考迭代器的运行方式和意义?本篇文章将带你了解Go的接口与泛型,还有迭代器的使用,附送类型断言的解释
76 3
|
17天前
|
存储 安全 Java
【Golang】(4)Go里面的指针如何?函数与方法怎么不一样?带你了解Go不同于其他高级语言的语法
结构体可以存储一组不同类型的数据,是一种符合类型。Go抛弃了类与继承,同时也抛弃了构造方法,刻意弱化了面向对象的功能,Go并非是一个传统OOP的语言,但是Go依旧有着OOP的影子,通过结构体和方法也可以模拟出一个类。
72 1
|
2月前
|
Cloud Native Go API
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
297 0
|
2月前
|
Cloud Native Java Go
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
205 0
|
Shell Go API
Go语言grequests库并发请求的实战案例
Go语言grequests库并发请求的实战案例
|
8月前
|
存储 缓存 安全
Go 语言中的 Sync.Map 详解:并发安全的 Map 实现
`sync.Map` 是 Go 语言中用于并发安全操作的 Map 实现,适用于读多写少的场景。它通过两个底层 Map(`read` 和 `dirty`)实现读写分离,提供高效的读性能。主要方法包括 `Store`、`Load`、`Delete` 等。在大量写入时性能可能下降,需谨慎选择使用场景。
|
11月前
|
存储 负载均衡 监控
如何利用Go语言的高效性、并发支持、简洁性和跨平台性等优势,通过合理设计架构、实现负载均衡、构建容错机制、建立监控体系、优化数据存储及实施服务治理等步骤,打造稳定可靠的服务架构。
在数字化时代,构建高可靠性服务架构至关重要。本文探讨了如何利用Go语言的高效性、并发支持、简洁性和跨平台性等优势,通过合理设计架构、实现负载均衡、构建容错机制、建立监控体系、优化数据存储及实施服务治理等步骤,打造稳定可靠的服务架构。
259 1
|
11月前
|
Go 调度 开发者
探索Go语言中的并发模式:goroutine与channel
在本文中,我们将深入探讨Go语言中的核心并发特性——goroutine和channel。不同于传统的并发模型,Go语言的并发机制以其简洁性和高效性著称。本文将通过实际代码示例,展示如何利用goroutine实现轻量级的并发执行,以及如何通过channel安全地在goroutine之间传递数据。摘要部分将概述这些概念,并提示读者本文将提供哪些具体的技术洞见。
|
12月前
|
Java 大数据 Go
Go语言:高效并发的编程新星
【10月更文挑战第21】Go语言:高效并发的编程新星
379 7

热门文章

最新文章

推荐镜像

更多