Go

Go 知识量:6 - 35 - 115

1.3 数组和字符串><

数组- 1.3.1 -

Go语言中的数组是一种固定长度的数据结构,其长度在声明时必须指定,并且不可更改。数组的元素通过索引访问,索引从0开始。

在Go语言中,声明数组的语法如下:

var arr [n]type

其中,n表示数组的长度,type表示数组元素的类型。例如,声明一个长度为5的整数数组可以这样写:

var arr [5]int

初始化数组时,可以直接指定数组的每个元素的值。例如:

var arr [5]int = [5]int{1, 2, 3, 4, 5}

或者使用简短声明方式:

arr := [5]int{1, 2, 3, 4, 5}

数组的长度是固定的,不能改变。如果需要动态长度的数据结构,可以使用切片(slice)或者映射(map)。

数组中的元素可以通过索引访问和修改。例如,arr[0]表示数组中的第一个元素,arr[1]表示第二个元素,以此类推。通过索引可以读取和修改数组中的值。

需要注意的是,Go语言中的数组是值类型,当数组作为参数传递给函数时,会进行值拷贝。如果需要传递数组的引用,可以使用切片或者映射。

字符串- 1.3.2 -

在Go语言中,字符串是一种基本的数据类型,用于表示文本数据。字符串是由零个或多个字符组成的不可变序列。

在Go语言中,字符串是不可变的,意味着一旦创建了一个字符串,就不能更改它的内容。如果需要修改字符串中的某个字符,必须创建一个新的字符串。

以下是一些与Go语言字符串相关的基本操作和函数:

1. 字符串声明和初始化:

var str string = "Hello, World!"

2. 字符串拼接:

result := "Hello, " + "World!"

3. 字符串长度获取:

length := len("Hello, World!") // 返回13

4. 字符串索引:

firstChar := str[0] // 返回'H'

5. 字符串切片:

slice := str[1:5] // 返回"ello"

6. 字符串比较:

isEqual := str == "Hello, World!" // 返回true

7. 字符串查找:

index := strings.Index(str, "World") // 返回7

8. 字符串替换:

newStr := strings.Replace(str, "World", "Go", -1) // 将"World"替换为"Go"

9. 字符串分割:

parts := strings.Split(str, ", ") // 将字符串按逗号分割成数组

10. 字符串转大写或小写:

upperStr := strings.ToUpper(str) // 将字符串转换为大写字母形式      
lowerStr := strings.ToLower(str) // 将字符串转换为小写字母形式

切片- 1.3.3 -

在Go语言中,切片(Slice)是一个用于处理数组和列表的灵活且强大的工具。切片是对数组的一个连续片段的引用,它提供了更方便、更灵活的方式来处理数组数据。

切片的定义方式如下:

var sliceName []ElementType

其中,sliceName 是切片的名称,ElementType 是切片元素的类型。

切片的创建可以通过以下几种方式:

1. 使用 make 函数创建一个指定长度的切片,并分配底层数组:

slice := make([]ElementType, length)

2. 通过数组字面量来创建切片:

slice := []ElementType{element1, element2, element3}

3. 使用数组的切片操作来创建切片:

slice := array[start:end]

其中,array 是一个数组,start 和 end 指定了切片的起始和结束位置。注意,切片的结束位置是切片的最后一个元素的索引,不包括该元素。

切片的常用操作包括:

  • 获取切片长度:使用 len() 函数可以获取切片的长度。

  • 获取切片中的元素:通过索引访问切片中的元素,例如 slice[index]。注意,切片的索引从0开始。

  • 修改切片中的元素:通过索引可以修改切片中的元素的值。

  • 追加元素到切片:使用 append() 函数可以将元素追加到切片的末尾。

  • 切片的截取和拼接:可以使用切片的切片操作来截取子切片,或者使用 append() 函数将两个切片拼接在一起。

  • 切片的复制:可以使用 copy() 函数将一个切片复制到另一个切片。

  • 切片的删除:可以使用切片的切片操作来删除子切片。

  • 切片的扩容:当切片的长度超过容量时,底层数组会自动扩容。可以使用 cap() 函数获取切片的容量。