Go语言基础语法梳理 | 青训营

49 阅读3分钟

引子

在做课后作业时发现对Go一些基础语法掌握的不够牢固,借着这个机会梳理了一下笔记这样以后不懂的时候也有可以参考的文档,作为第一篇笔记。

数组

数组是具有固定长度的元素集合。在Go语言中,数组是一个值类型,因此可以通过值传递给函数。这一特点使得数组在内存管理上相对高效,但同时也限制了灵活性。数组的大小固定,通常在需要更加灵活的数据结构时会选择使用切片。

示例: 创建一个长度为5的整型数组并赋值
var arr [5]int = [5]int{1, 2, 3, 4, 5}

切片

切片是对数组的引用,没有固定大小,因此更加灵活。它是一个引用类型,可以自动调整大小。切片的要注意区分的是其容量和长度。其中容量是切片背后的数组的大小,而长度是切片中元素的数量。切片代表了Go的一个独特的设计理念,即提供强大功能的同时保持简单和可控。

示例:从数组创建切片,并调整其长度。
slice := arr[1:4] // 获取arr的第1至第3个元素 slice = append(slice, 6) // 添加一个元素,长度调整

map

map是Go中的关键字值存储结构,允许存储任何特定类型的键和值。map的动态特性使其成为一种非常灵活的数据结构。然而由于这种灵活性,使用map可能需要注意性能和内存管理。

示例:创建一个字符串到整数的映射,并添加一个键值对。
m := make(map[string]int) 
m["age"] = 25

函数

Go语言的函数支持多返回值,这增强了其灵活性。通过使用接口,函数还可以实现更高级的编程方式,如策略模式等。

示例:声明一个接受两个整数参数并返回两个整数的函数。
func addAndMultiply(a int, b int) (int, int) {
    return a + b, a * b 
} 
sum, product := addAndMultiply(8, 4)

结构体

结构体是将多个字段(变量)组合在一起的复合类型,用于表示现实世界中的实体。Go中的结构体很有特点,因为它们既可以用作数据容器,也可以通过关联方法实现面向对象编程的特性。这种简约的方式符合Go的设计理念,即提供必要的工具,但不强迫程序员使用特定的编程范式。

示例:定义一个结构体,并创建一个的实例。
type Person struct {
    Name string
    Age  int
}
person := Person{Name: "Alex", Age: 48}

总结:

Go语言的这些特性展示了一种设计简单但功能强大的编程语言。其强类型和并发模型还为构建可维护和高性能的程序提供了基础。然而,它也有很多不是那么简单易用的点,例如对错误处理的不同方法可能需要一些适应。总的来说,Go提供了一个现代、高效和实用的工具,适合许多不同类型的项目。