Go 语言数组复制

Golang编程语言中的数组与其他编程语言非常相似。在程序中,有时我们需要存储一组相同类型的数据,例如学生评分列表。这种类型的集合使用数组存储在程序中。数组是固定长度的序列,用于将同类元素存储在内存中。Golang没有提供将一个数组复制到另一个数组的特定内置函数。但是我们可以通过简单地通过值或引用将数组分配给新变量来创建数组的副本。

如果我们通过值创建数组的副本并在原始数组的值中进行了一些更改,则它不会反映在该数组的副本中。 而且,如果我们通过引用创建数组的副本,并对原始数组的值进行了一些更改,那么它将反映在该数组的副本中。 如以下示例所示:

语法:

//按值创建数组的副本
arr := arr1

//通过引用创建数组的副本
arr := &arr1

让我们借助示例来讨论这个概念:

范例1:

//按值复制数组
package main

import "fmt"

func main() {

    //创建和初始化数组
    //使用简写声明
    my_arr1 := [5]string{"Scala", "Perl", "Java", "Python", "Go"}

    //将数组复制到新变量中
    //在这里,元素按值传递
    my_arr2 := my_arr1

    fmt.Println("Array_1: ", my_arr1)
    fmt.Println("Array_2:", my_arr2)

    my_arr1[0] = "C++"

    //在这里,当我们复制数组时
    //按值放入另一个数组
    //然后对原始内容进行更改
    //数组不反映在
    //该数组的副本
    fmt.Println("\nArray_1: ", my_arr1)
    fmt.Println("Array_2: ", my_arr2)
}

输出:

Array_1:  [Scala Perl Java Python Go]
Array_2: [Scala Perl Java Python Go]

Array_1:  [C++ Perl Java Python Go]
Array_2:  [Scala Perl Java Python Go]

通过引用复制数组示例:

//通过引用复制数组
package main

import "fmt"

func main() {

    //创建和初始化数组
    //使用简写声明
    my_arr1 := [6]int{12, 456, 67, 65, 34, 34}

    //将数组复制到新变量中
    //在这里,元素通过引用传递
    my_arr2 := &my_arr1

    fmt.Println("Array_1: ", my_arr1)
    fmt.Println("Array_2:", *my_arr2)

    my_arr1[5] = 1000000

    //在这里,当我们复制数组时
    //通过引用放入另一个数组
    //然后对原始内容进行更改
    //数组将反映在
    //该数组的副本
    fmt.Println("\nArray_1: ", my_arr1)
    fmt.Println("Array_2:", *my_arr2)
}

输出:

Array_1:  [12 456 67 65 34 34]
Array_2: [12 456 67 65 34 34]

Array_1:  [12 456 67 65 34 1000000]
Array_2: [12 456 67 65 34 1000000]