📌  相关文章
📜  在 Golang 中按值和引用将数组复制到另一个数组中(1)

📅  最后修改于: 2023-12-03 15:07:39.648000             🧑  作者: Mango

在Golang中,我们可以使用值复制或引用复制方式将一个数组复制到另一个数组。下面分别介绍这两种方式。

按值复制方式

按值复制数组时,会创建一个新的数组,并将原始数组中的所有值复制给新数组。新数组和原始数组是两个独立的数组,对任一数组进行修改都不会影响另一个数组。

package main

import "fmt"

func main() {
    // 创建数组a,包含5个元素
    a := [5]int{1, 2, 3, 4, 5}
    fmt.Println("原始数组a:", a)
  
    // 创建数组b,将a按值复制给b
    b := a
    fmt.Println("复制后的数组b:", b)

    // 修改a的第一个元素
    a[0] = 10
    fmt.Println("修改后的数组a:", a)
    fmt.Println("未受影响的数组b:", b)
}

上面的代码中,我们创建了一个包含5个元素的数组a,并将其按值复制给了数组b。其中,修改数组a的第一个元素不会影响数组b。

输出结果为:

原始数组a: [1 2 3 4 5]
复制后的数组b: [1 2 3 4 5]
修改后的数组a: [10 2 3 4 5]
未受影响的数组b: [1 2 3 4 5]
按引用复制方式

按引用复制数组时,会创建一个新的数组,并让新数组和原始数组共享相同的内存空间。这意味着对任一数组进行修改都会影响另一个数组。

package main

import "fmt"

func main() {
    // 创建数组a,包含5个元素
    a := [5]int{1, 2, 3, 4, 5}
    fmt.Println("原始数组a:", a)
  
    // 创建数组b,将a按引用复制给b
    var b *[5]int = &a
    fmt.Println("复制后的数组b:", *b)

    // 修改a的第一个元素
    a[0] = 10
    fmt.Println("修改后的数组a:", a)
    fmt.Println("受影响的数组b:", *b)
}

上面的代码中,我们创建了一个包含5个元素的数组a,并将其按引用复制给了数组b。其中,修改数组a的第一个元素也会影响数组b。

输出结果为:

原始数组a: [1 2 3 4 5]
复制后的数组b: [1 2 3 4 5]
修改后的数组a: [10 2 3 4 5]
受影响的数组b: [10 2 3 4 5]

以上就是在Golang中按值和引用将数组复制到另一个数组中的方式介绍。