【入门】Go语言数组详解

发布时间 2023-03-28 16:23:59作者: 躺平摆烂

一、Go语言数组简介

1.1 什么是数组?

  • 数组是一个由固定长度的特定类型元素组成的序列,一个数组可以由零个或多个元素组成。

  • 因为数组的长度是固定的,所以在Go语言中很少直接使用数组。

  • 数组可以存放多个同一类型数据。数组也是一种数据类型,在Go中,数组是值类型。

  • 数组的每个元素都可以通过索引来访问,索引起始0开始到数组长度减1的位置,内置函数len()可以返回数组中元素的个数。

1.2 数组声明语法

var 数组变量名 [元素数量]Type
  • 数组变量名:数组声明及使用时的变量名
  • 元素数量:数组的元素数量
  • Type:可以是任意基本类型,也可以是数组本省,类型为数组本身时,可以实现多维数组。

举个例子:创建int类型的class数组,其中元素数量为5

	var class [5]int

二、数组的基本操作

2.1 数组的定义及赋值

package main

import (
	"fmt"
)

func main() {
	var class [5]int // 定义数组
	for i := 0; i < len(class); i++ {
		class[i] = i + 100 // 数组赋值
	}
	fmt.Println(class)
}

代码输出内容:

[100 101 102 103 104]

2.2 数组的初始化

数组初始化是指在声明数组时赋值。

2.2.1 指定长度初始化

指定长度和初始化值,初始化数组中 {} 中的元素个数不能大于 [] 中的数字:

注意: 初始化时是带有 = 号的。

func main() {
	var class = [4]string{"zhangsan", "lisi", "wangwu", "maliu"}
	fmt.Printf("%v", class)
}

2.2.2 不指定长度初始化

当我们不指定长度的时候,也就是[]中不写入内容,GO语言默认会根据元素的个数来设置数组的大小。

package main

import (
	"fmt"
)

func main() {
	var class = [...]string{"zhangsan", "lisi", "wangwu", "maliu"}
	fmt.Printf("%v", len(class))
}

或者使用 ...如下:

package main

import (
	"fmt"
)

func main() {
	var class = [...]string{1: "lisi", 3: "maliu"}
	fmt.Println(len(class))
}

代码输出内容:

4

2.2.3 根据索引初始化指定元素

只初始化索引是 1和3 的元素

package main

import (
	"fmt"
)

func main() {
	var class = []string{1: "lisi", 3: "maliu"}
	fmt.Println(class)
}

三、数组的遍历

3.1 传统for循环遍历

package main

import (
	"fmt"
)

func main() {
	var arr = [...]float64{1.1, 1.2, 1.3, 1.4, 1.5, 1.6}
	for i := 0; i < len(arr); i++ {
		fmt.Println(arr[i])
	}
}

3.2 for range循环遍历

package main

import (
	"fmt"
)

func main() {
	var arr = [...]float64{1.1, 1.2, 1.3, 1.4, 1.5, 1.6}
	for i, v := range arr {
		fmt.Printf("index=%d\tvalue=%v\n", i, v)
	}
}

代码输出内容:

index=0	value=1.1
index=1	value=1.2
index=2	value=1.3
index=3	value=1.4
index=4	value=1.5
index=5	value=1.6

四、数组综合练习

4.1 案例一:比较两台数组元素是否一致

package main

import "fmt"

func main() {
	var arr1 = [5]int{1, 2, 3, 4, 5}
	var arr2 = [5]int{1, 2, 3, 4, 5}
	b := Compare(arr1, arr2)
	if b {
		fmt.Println("数组一致!")
	} else {
		fmt.Println("数组不致!")
	}
}

func Compare(n1 [5]int, n2 [5]int) bool {
	var b bool = true
	if len(n1) == len(n2) {
		for i := 0; i < len(n1); i++ {
			if n1[i] == n2[i] {
				continue
			} else {
				b = false
				break
			}
		}
	} else {
		b = false
	}
	return b
}