📅  最后修改于: 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中按值和引用将数组复制到另一个数组中的方式介绍。