go语言基础笔记 | 青训营

66 阅读6分钟

Go语言是一门由Google开发的编程语言,它具有许多独特的特点,适合用于多种不同的应用场景。

1. Go语言的特点

  • 并发支持:Go语言天生支持并发编程,通过Go协程(goroutine)和通道(channel)实现轻量级并发操作。这使得Go语言在处理高并发、并行计算等场景下表现出色,适合用于编写高性能的服务器应用。
  • 快速编译:Go语言的编译速度非常快,可快速将代码转换为本地机器码。这使得开发者可以迅速获得反馈,提高了开发效率。
  • 静态类型:Go语言是静态类型语言,编译器在编译阶段会检查类型错误,提前发现潜在的问题,有助于减少运行时错误。
  • 内置垃圾回收:Go语言拥有自动内存管理和垃圾回收功能,开发者无需手动管理内存,减轻了开发负担,并且减少了内存泄漏的风险。
  • 简洁易读:Go语言的语法简洁易读,清晰表达意图。它去掉了冗长的语法和复杂的特性,降低了代码的复杂性,易于维护和阅读。
  • 丰富标准库:Go语言拥有丰富的标准库,涵盖了网络编程、文件处理、文本处理、加密解密等各种功能,开发者可以方便地使用这些功能进行开发。
  • 跨平台:Go语言编译后生成的机器码可以在不同的操作系统上运行,支持跨平台部署。

2. 适合用来干什么

由于Go语言的特点,它适合用于各种不同的应用场景:

  • Web开发:Go语言拥有强大的标准库和框架支持,适合用于构建高性能的Web应用程序和RESTful API服务。
  • 服务器开发:Go语言的并发支持和快速编译特性使其成为开发高并发服务器和网络服务的理想选择。
  • 云计算:Go语言对于开发云原生应用有很好的支持,特别适合用于构建容器、微服务等场景。
  • 工具开发:由于Go语言编译速度快、静态类型和简洁易读的特点,它适合用于开发各种工具和命令行应用。
  • 大数据处理:Go语言的并发支持使其适合处理大规模数据,并进行并行计算。
  • 网络编程:Go语言提供了丰富的网络编程功能,适合用于开发网络应用和分布式系统。

综上所述,Go语言是一门灵活、高效和简洁的编程语言,适合用于各种不同的领域和应用场景。它在服务器端、云计算、网络编程、并发处理等方面具有明显优势,是一门值得学习和使用的编程语言。

3. 变量类型

在Go语言中,变量是用于存储数据的容器。在声明变量时,需要指定变量的类型。常见的基本数据类型有:

  • 整数类型(int) :用于表示整数值,包括有符号和无符号整数。例如,intint8int16int32int64uintuint8uint16uint32uint64等。

    示例:

    var num int = 10
    
  • 浮点数类型(float) :用于表示带小数部分的数值。例如,float32float64

    示例:

    var pi float64 = 3.14159
    
  • 布尔类型(bool) :用于表示真或假的值,只有两个可能的取值:truefalse

    示例:

    var isTrue bool = true
    
  • 字符串类型(string) :用于表示文本字符串,使用双引号"包裹。

    示例:

    var message string = "Hello, Go!"
    
  • 复数类型(complex) :用于表示复数,例如complex64complex128

    示例:

    var comp complex128 = complex(2, 3)
    

除了基本数据类型,Go语言还提供了复合数据类型,如数组切片映射(map)结构体等。

4. 控制语句

条件语句

Go语言中的条件语句使用 ifelse 关键字来实现条件控制。例如:

if condition {
    // 条件为真时执行的代码
} else {
    // 条件为假时执行的代码
}

switch语句

switch 语句用于多路分支判断。它与其他编程语言的switch语句相似,但在Go语言中,case不需要显式地使用break,每个case执行完毕后自动退出。

switch expression {
    case value1:
        // expression等于value1时执行的代码
    case value2:
        // expression等于value2时执行的代码
    default:
        // 所有case条件都不满足时执行的代码
}

5. 循环结构

Go语言提供了for循环结构,用于重复执行一段代码块。

for循环

for initialization; condition; post {
    // 循环体
}

其中,

  • initialization 初始化表达式,用于设置循环变量的初始值。
  • condition 条件表达式,用于判断是否继续循环。
  • post 后置语句,用于在每次循环迭代结束后执行。

示例:

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

range循环

range关键字用于遍历数组、切片、映射等数据结构。

for index, value := range collection {
    // index 是当前元素的索引
    // value 是当前元素的值
    // 循环体
}

6. 切片和映射

切片(Slice)

切片是Go语言中一种动态数组,用于存储一系列元素的集合。切片类似于数组,但长度可以动态变化。

创建切片:

// 使用make函数创建一个初始长度为3的整型切片
numbers := make([]int, 3)

切片还可以从数组或其他切片中获取部分元素:

// 从数组arr的索引1处开始,截取长度为3的切片
subSlice := arr[1:4]

映射(Map)

映射是Go语言中的关联数组,用于存储一系列键值对。类似于字典。

创建映射:

// 创建一个映射,键为string类型,值为int类型
ages := make(map[string]int)

插入和更新映射中的键值对:

ages["Alice"] = 30
ages["Bob"] = 25

获取映射中的值:

fmt.Println(ages["Alice"]) // 输出:30

删除映射中的键值对:

delete(ages, "Bob")

7.个人思考与总结

通过学习Go语言的基础知识,我对这门语言有了初步的了解。Go语言的语法简洁明了,非常适合用于构建高性能的应用程序。切片和映射是Go语言中强大的数据结构,使得数据处理和管理变得更加灵活和高效。

在控制语句方面,Go语言提供了传统的if-elseswitch结构,让程序员可以根据不同的条件来控制代码的执行流程。同时,for循环提供了多种迭代方式,更加灵活地处理重复任务。

总的来说,Go语言是一门非常优雅和强大的编程语言。通过深入学习和实践,我相信可以更好地掌握Go语言的特性,并能够利用它来构建出更加高效和可靠的应用程序。