Golang学习笔记_13——数组
Golang学习笔记_10——SwitchGolang学习笔记_11——指针
Golang学习笔记_12——结构体
数组
Go语言中的数组是一种具有固定长度、雷同类型元素的集合。数组的长度是数组类型的一部分,这意味着数组的长度在界说后是固定的,不能改变。
在Go语言中,数组的使用非常底子且重要,特别是在明白切片(slice)和映射(map)等更复杂的数据结构时。
1. 界说
// 数组可以通过显式地指定长度和元素类型来定义
var aar1 int
// 定义时直接初始化数组的元素
var aar2 = int{1, 2, 3, 4, 5}
// 省略数组的长度,编译器会根据提供的初始化值的数量自动推断
var aar3 = [...]int{1, 2, 3, 4}
2. 访问和修改
// 修改数组的值
aar1 = 10
// 访问数组的第三个元素
value := aar
3. 多维数组
var matrix int
matrix = int{
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
}
// 访问多维数组
value2 := matrix// 访问第二行第三列的元素
4. 计算数组长度
length := len(matrix)
5. 数组作为函数参数
将数组作为函数参数传递。传递的是数组的副本,因此函数内部对数组的修改不会影响外部的数组。
func array_demo2(aar int) {
arr := aar
for i := 0; i < len(arr); i++ {
fmt.Println("Index:", i, "Value:", arr)
}
aar = 100
}
测试方法
func Test_array_demo2(t *testing.T) {
aarr := [...]int{1, 2, 3, 4, 5}
array_demo2(aarr)
fmt.Println(aarr)
}
输出结果
=== RUN Test_array_demo2
Index: 0 Value: 1
Index: 1 Value: 2
Index: 2 Value: 3
Index: 3 Value: 4
Index: 4 Value: 5
--- PASS: Test_array_demo2 (9.03s)
PASS
6. 遍历
func array_demo3(aar int) {
arr := aar
for i := 0; i < len(arr); i++ {
fmt.Println("Index:", i, "Value:", arr)
}
for index, value := range arr {
fmt.Println("Index:", index, "Value:", value)
}
}
测试方法
func Test_array_demo3(t *testing.T) {
aar1 := int{1, 2, 3, 4, 5}
type args struct {
aar int
}
tests := []struct {
name string
args args
}{
{
name: "1",
args: args{aar: aar1},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
array_demo3(tt.args.aar)
})
}
}
输出结果
=== RUN Test_array_demo3
=== RUN Test_array_demo3/1
Index: 0 Value: 1
Index: 1 Value: 2
Index: 2 Value: 3
Index: 3 Value: 4
Index: 4 Value: 5
Index: 0 Value: 1
Index: 1 Value: 2
Index: 2 Value: 3
Index: 3 Value: 4
Index: 4 Value: 5
--- PASS: Test_array_demo3 (0.00s)
--- PASS: Test_array_demo3/1 (0.00s)
PASS
7. 数组的内存体现
数组在内存中是连续存储的,这意味着数组访问速率非常快。但是,数组的长度是其类型的一部分,因此不同长度的数组是不同类型,不能相互赋值。
源码
// array_demo.go 文件package array_demoimport "fmt"func array_demo1() { // 数组可以通过显式地指定长度和元素类型来界说 var aar1 int // 界说时直接初始化数组的元素 var aar2 = int{1, 2, 3, 4, 5} // 省略数组的长度,编译器会根据提供的初始化值的数量自动推断 var aar3 = [...]int{1, 2, 3, 4} // 修改数组的值 aar1 = 10 // 访问数组的第三个元素 value := aar2 fmt.Println(aar3) fmt.Printf("aar2 value is %d\n", value) var matrix int matrix = int{ {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, } // 访问多维数组 value2 := matrix // 访问第二行第三列的元素 fmt.Println(value2)}func array_demo2(aar int) {
arr := aar
for i := 0; i < len(arr); i++ {
fmt.Println("Index:", i, "Value:", arr)
}
aar = 100
}
func array_demo3(aar int) {
arr := aar
for i := 0; i < len(arr); i++ {
fmt.Println("Index:", i, "Value:", arr)
}
for index, value := range arr {
fmt.Println("Index:", index, "Value:", value)
}
}
// array_demo_test.gopackage array_demoimport ( "fmt" "testing")func Test_array_demo2(t *testing.T) {
aarr := [...]int{1, 2, 3, 4, 5}
array_demo2(aarr)
fmt.Println(aarr)
}
func Test_array_demo3(t *testing.T) {
aar1 := int{1, 2, 3, 4, 5}
type args struct {
aar int
}
tests := []struct {
name string
args args
}{
{
name: "1",
args: args{aar: aar1},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
array_demo3(tt.args.aar)
})
}
}
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]