0


【Go语言】语法基础之控制结构(if、for、switch)详解

🐇明明跟你说过:个人主页

🏅个人专栏:《Go语言探索之旅》🏅

🔖行路有良友,便是天堂🔖

一、引言

1、Go语言简介

Go 语言,又称 Golang,是由 Google 设计并开发的一种静态类型的编译型编程语言。Go 语言最初由 Robert Griesemer、Rob Pike 和 Ken Thompson 等人在 2007 年开始设计,并于 2009 年正式对外发布。自那时以来,Go 语言因其简洁的设计、高效的性能以及易于学习的特点而迅速获得了广泛的关注和支持。

2、Go语言特点

  1. 简洁性:Go 语言的设计目标之一是使代码尽可能简洁易读。它采用了一种类似于 C 语言的语法,但去掉了许多不必要的复杂性。
  2. 高性能:Go 是一种编译型语言,它的编译器可以将源代码编译成本地机器码,因此具有较高的执行效率。同时,Go 语言内置了垃圾回收机制,使得开发者无需手动管理内存。
  3. 并发模型:Go 语言内置了对并发的支持,通过 goroutines 和 channels 实现了轻量级线程的概念,使得编写高并发程序变得简单而优雅。
  4. 标准库:Go 语言拥有一个非常强大的标准库,涵盖了网络编程、文件系统操作、加密等多个领域,极大地提高了开发效率。
  5. 跨平台:Go 语言支持多种操作系统和架构,包括 Windows、Linux、macOS、FreeBSD 等,可以轻松地进行跨平台开发。
  6. 工具链:Go 语言提供了一系列强大的工具,如 gofmt、vet、test 等,帮助开发者进行代码格式化、静态分析和单元测试。

二、控制结构

1、条件语句 if

if 语句是 Go 语言中用于基于条件执行不同代码块的基础结构。if 语句允许在条件为真时执行一组代码,而在条件为假时可以选择执行另一组代码或者跳过这部分代码。

基本语法

if condition {
    // 当 condition 为 true 时执行的代码
}

语法扩展

if condition {
    // 当 condition 为 true 时执行的代码
} else {
    // 当 condition 为 false 时执行的代码
}

或者包含多个条件分支:

if condition1 {
    // 当 condition1 为 true 时执行的代码
} else if condition2 {
    // 当 condition1 为 false 且 condition2 为 true 时执行的代码
} else {
    // 当所有条件均为 false 时执行的代码
}

2、循环语句for

for 循环是 Go 语言中用于重复执行一段代码直到满足某个条件为止的基本结构。Go 语言中的 for 循环比 C 语言中的 for 循环更为通用,可以用来实现多种类型的循环逻辑,包括计数循环、无限循环、条件循环等。

基本语法
形式 1: 计数循环

for init; condition; post {
    // 当 condition 为 true 时执行的代码
}

其中:

  • init:初始化语句,一般用于定义循环变量。
  • condition:循环条件,每次循环前都会检查这个条件,如果为 true 则继续执行循环体内的代码,否则跳出循环。
  • post:每次循环结束后执行的语句,通常用于更新循环变量。

示例代码

package main

import (
    "fmt"
)

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

输出结果

0
1
2
3
4

形式 2: 无限循环

for {
    // 无限循环执行的代码
}

通常会在循环体内使用 break 语句来跳出循环。

示例代码

package main

import (
    "fmt"
)

func main() {
    for {
        fmt.Println("这是无限循环")
        break  // 跳出循环
    }
}

输出结果

这是无限循环

形式 3: 条件循环

for condition {
    // 当 condition 为 true 时执行的代码
}

这种形式的 for 循环与 while 循环类似。

示例代码

package main

import (
    "fmt"
)

func main() {
    i := 0
    for i < 5 {
        fmt.Println(i)
        i++  // 更新条件
    }
}

输出结果

0
1
2
3
4

range 迭代器
for 循环还可以与 range 迭代器一起使用,用于迭代数组、切片、映射(maps)或通道(channels)中的元素。

示例代码:迭代切片

package main

import (
    "fmt"
)

func main() {
    numbers := []int{1, 2, 3, 4, 5}

    for index, value := range numbers {
        fmt.Printf("Index: %d, Value: %d\n", index, value)
    }
}

输出结果

Index: 0, Value: 1
Index: 1, Value: 2
Index: 2, Value: 3
Index: 3, Value: 4
Index: 4, Value: 5

示例代码:迭代映射

package main

import (
    "fmt"
)

func main() {
    ages := map[string]int{
        "Alice": 30,
        "Bob":   25,
        "Carol": 35,
    }

    for name, age := range ages {
        fmt.Printf("Name: %s, Age: %d\n", name, age)
    }
}

输出结果

Name: Alice, Age: 30
Name: Bob, Age: 25
Name: Carol, Age: 35

示例代码:迭代字符串

package main

import (
    "fmt"
)

func main() {
    word := "hello"

    for index, char := range word {
        fmt.Printf("Index: %d, Char: %c\n", index, char)
    }
}

输出结果

Index: 0, Char: h
Index: 1, Char: e
Index: 2, Char: l
Index: 3, Char: l
Index: 4, Char: o

continue 语句
continue 语句用于跳过当前循环中的剩余部分,并继续下一次循环。

示例代码

package main

import (
    "fmt"
)

func main() {
    for i := 0; i < 10; i++ {
        if i%2 == 0 {
            continue  // 跳过偶数
        }
        fmt.Println(i)
    }
}

输出结果

1
3
5
7
9

break 语句
break 语句用于立即退出当前循环。

示例代码

package main

import (
    "fmt"
)

func main() {
    for i := 0; i < 10; i++ {
        if i > 5 {
            break  // 当 i > 5 时退出循环
        }
        fmt.Println(i)
    }
}

输出结果

0
1
2
3
4
5

通过上述示例代码,可以看到如何使用 Go 语言中的 for 循环来重复执行一段代码,直到满足某个条件为止。for 循环不仅可以用于计数循环,还可以用于无限循环、条件循环以及使用 range 迭代器来迭代数据结构中的元素。此外,continue 和 break 语句可用于控制循环的流程。

3、switch语句

在 Go 语言中,switch 语句是一种用于基于不同条件执行不同代码块的控制结构。它提供了一种比 if-else 更简洁的方式来处理多个条件分支的情况。switch 语句可以用来替代多个 if-else 语句,使得代码更清晰和易于维护。

基本语法
switch 语句的基本语法如下:

switch expression {
case label1:
    // 当 expression 的值等于 label1 时执行的代码
case label2:
    // 当 expression 的值等于 label2 时执行的代码
...
default:
    // 当 expression 的值不匹配任何 case 时执行的代码
}

其中:

  • **expression **是一个表达式,可以是任何类型的值。
  • **case label **定义了一个分支,当 expression 的值等于 label 时,执行相应的代码块。
  • **default **分支是可选的,当没有任何 case 匹配时执行。

示例代码:基本的 switch 语句
下面是一个简单的示例,展示了如何使用 switch 语句来处理不同的条件:

package main

import (
    "fmt"
)

func main() {
    grade := 'B'

    switch grade {
    case 'A':
        fmt.Println("Excellent!")
    case 'B':
        fmt.Println("Good job!")
    case 'C', 'D':
        fmt.Println("You can do better!")
    default:
        fmt.Println("Try harder next time!")
    }
}

输出结果

Good job!

示例代码:无表达式的 switch 语句
有时我们可能想在没有表达式的情况下使用 switch 语句。在这种情况下,可以省略 expression,并直接在 case 标签中指定条件。

package main

import (
    "fmt"
)

func main() {
    x := 10

    switch {
    case x > 0:
        fmt.Println("x is positive")
    case x < 0:
        fmt.Println("x is negative")
    default:
        fmt.Println("x is zero")
    }
}

输出结果

x is positive

示例代码:使用类型断言的 switch 语句
switch 语句还可以用于类型断言,当需要根据不同的类型执行不同的代码时非常有用。

package main

import (
    "fmt"
)

func describeValue(v interface{}) {
    switch v := v.(type) {
    case int:
        fmt.Printf("The value is an integer: %d\n", v)
    case string:
        fmt.Printf("The value is a string: %s\n", v)
    case nil:
        fmt.Println("The value is nil")
    default:
        fmt.Printf("The value is of unknown type: %T\n", v)
    }
}

func main() {
    describeValue(42)
    describeValue("Hello, World!")
    describeValue(nil)
    describeValue(true)
}

输出结果

The value is an integer: 42
The value is a string: Hello, World!
The value is nil
The value is of unknown type: bool

示例代码:带 fallthrough 的 switch 语句
fallthrough 关键字可以使 switch 语句执行下一个 case 块,即使当前 case 块的条件已经满足。

package main

import (
    "fmt"
)

func main() {
    x := 10

    switch {
    case x > 0:
        fmt.Println("x is positive")
        fallthrough
    case x < 0:
        fmt.Println("x is negative")
    default:
        fmt.Println("x is zero")
    }
}

输出结果

x is positive
x is negative

通过上述示例代码,可以看到如何使用 Go 语言中的 switch 语句来根据不同的条件执行不同的代码块。switch 语句可以用于处理多个条件分支,使得代码更加简洁和易于维护。此外,switch 语句还可以用于类型断言和处理无表达式的情况。

💕💕💕每一次的分享都是一次成长的旅程,感谢您的陪伴和关注。希望这些关于Go语言的文章能陪伴您走过技术的一段旅程,共同见证成长和进步!😺😺😺

🧨🧨🧨让我们一起在技术的海洋中探索前行,共同书写美好的未来!!!


本文转载自: https://blog.csdn.net/weixin_53269650/article/details/143416446
版权归原作者 明明跟你说过 所有, 如有侵权,请联系我们删除。

“【Go语言】语法基础之控制结构(if、for、switch)详解”的评论:

还没有评论