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

📅  最后修改于: 2021-10-25 02:39:18             🧑  作者: Mango

Golang 中的数组是相同类型元素的编号序列。数组的大小是固定的。我们可以通过它们的索引访问元素。您可以声明一个大小为 n 且类型为 T 的数组,指定下面提到的这种方式。

var array[n]T 

Go 没有内置函数将数组复制到另一个数组。有两种方法可以将一个数组复制到另一个数组:

  • 按价值
  • 引用

1. 按值复制:如果我们按值复制一个数组,然后对原始数组的值进行更改,则相同的更改将不会反映在原始数组的副本中。

2. 通过引用复制:如果我们通过引用复制一个数组,然后在原始数组中进行任何更改,那么它们将反映在创建的原始数组的副本中。

例子:

// Golang program to copy an array by value
// and reference into another array
package main
  
import "fmt"
  
func main() {
  
    // original string
    strArray := [3]string{"Apple", "Mango", "Guava"}
  
    // data is passed by value
    Arraybyval := strArray
  
    // data is passed by reference
    Arraybyref := &strArray
  
    fmt.Printf("strArray: %v\n", strArray)
    fmt.Printf("Arraybyval : %v\n", Arraybyval)
    fmt.Printf("*Arraybyref : %v\n", *Arraybyref)
  
    strArray[0] = "Watermelon"
  
    fmt.Printf("After making changes")
  
    fmt.Printf("strArray: %v\n", strArray)
    fmt.Printf("Arraybyval: %v\n", Arraybyval)
    fmt.Printf("*Arraybyref: %v\n", *Arraybyref)
}

输出:

strArray: [Apple Mango Guava]
Arraybyval : [Apple Mango Guava]
*Arraybyref : [Apple Mango Guava]
After making changesstrArray: [Watermelon Mango Guava]
Arraybyval: [Apple Mango Guava]
*Arraybyref: [Watermelon Mango Guava]