Golang 如何将一个数组复制到另一个数组

Golang 如何将一个数组复制到另一个数组

Golang或Go编程语言中的数组与其他编程语言非常相似。在程序中,有时我们需要存储相同类型的数据集合,比如学生成绩列表。这种类型的集合使用数组在程序中进行存储。数组是用于在内存中存储同类型元素的固定长度序列。Golang没有提供特定的内置函数来将一个数组复制到另一个数组中。但是我们可以通过按值或引用将一个数组赋值给一个新变量来创建数组的副本。如果我们通过按值创建数组的副本并对原始数组的值进行了一些更改,则它不会反映在该数组的副本中。如果我们通过引用创建一个数组的副本并对原始数组的值进行了一些更改,则它将反映在该数组的副本中。如下面的例子所示:

语法:

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

让我们通过以下示例来讨论这个概念:

例1:

// Go程序,演示如何通过值复制一个数组
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]

例2:

// 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]
有几种在Go中将一个数组复制到另一个数组的方法,下面列出了三种常用方法:





### 
1.使用循环:







```go
package main

import "fmt"

func main() {
    originalArray := []int{1, 2, 3, 4, 5}
    copyArray := make([]int, len(originalArray))

    for i, value := range originalArray {
        copyArray[i] = value
    }

    fmt.Println("Original Array: ", originalArray)
    fmt.Println("Copy Array: ", copyArray)
} 

输出:

Original Array: [1 2 3 4 5]
Copy Array: [1 2 3 4 5]

2.使用copy函数:

package main

import "fmt"

func main() {
    originalArray := []int{1, 2, 3, 4, 5}
    copyArray := make([]int, len(originalArray))

    copy(copyArray, originalArray)

    fmt.Println("Original Array: ", originalArray)
    fmt.Println("Copy Array: ", copyArray)
} 

输出:

Original Array: [1 2 3 4 5]
Copy Array: [1 2 3 4 5]

3. 使用append函数:

package main

import "fmt"

func main() {
    originalArray := []int{1, 2, 3, 4, 5}
    copyArray := make([]int, 0, len(originalArray))

    copyArray = append(copyArray, originalArray...)

    fmt.Println("Original Array: ", originalArray)
    fmt.Println("Copy Array: ", copyArray)
} 

输出:

Original Array: [1 2 3 4 5]
Copy Array: [1 2 3 4 5]

这是在Go中将数组复制到另一个数组的三种最常见方法。 copy函数是复制数组最高效的方式,但在不同的场景中,其他方法也可能很有用。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程