一给 发表于 2024-12-23 18:34:09

Golang学习笔记_13——数组

Golang学习笔记_10——Switch
Golang学习笔记_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]
查看完整版本: Golang学习笔记_13——数组