🐇明明跟你说过:个人主页
🏅个人专栏:《Go语言探索之旅》🏅
🔖行路有良友,便是天堂🔖
一、引言
1、Go语言简介
Go 语言,又称 Golang,是由 Google 设计并开发的一种静态类型的编译型编程语言。Go 语言最初由 Robert Griesemer、Rob Pike 和 Ken Thompson 等人在 2007 年开始设计,并于 2009 年正式对外发布。自那时以来,Go 语言因其简洁的设计、高效的性能以及易于学习的特点而迅速获得了广泛的关注和支持。
2、Go语言特点
- 简洁性:Go 语言的设计目标之一是使代码尽可能简洁易读。它采用了一种类似于 C 语言的语法,但去掉了许多不必要的复杂性。
- 高性能:Go 是一种编译型语言,它的编译器可以将源代码编译成本地机器码,因此具有较高的执行效率。同时,Go 语言内置了垃圾回收机制,使得开发者无需手动管理内存。
- 并发模型:Go 语言内置了对并发的支持,通过 goroutines 和 channels 实现了轻量级线程的概念,使得编写高并发程序变得简单而优雅。
- 标准库:Go 语言拥有一个非常强大的标准库,涵盖了网络编程、文件系统操作、加密等多个领域,极大地提高了开发效率。
- 跨平台:Go 语言支持多种操作系统和架构,包括 Windows、Linux、macOS、FreeBSD 等,可以轻松地进行跨平台开发。
- 工具链: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语言的文章能陪伴您走过技术的一段旅程,共同见证成长和进步!😺😺😺
🧨🧨🧨让我们一起在技术的海洋中探索前行,共同书写美好的未来!!!
版权归原作者 明明跟你说过 所有, 如有侵权,请联系我们删除。