Golang編程語言中的數(shù)組與其他編程語言非常相似。在程序中,有時我們需要存儲一組相同類型的數(shù)據(jù),例如學生評分列表。這種類型的集合使用數(shù)組存儲在程序中。數(shù)組是固定長度的序列,用于將同類元素存儲在內(nèi)存中。Golang沒有提供將一個數(shù)組復制到另一個數(shù)組的特定內(nèi)置函數(shù)。但是我們可以通過簡單地通過值或引用將數(shù)組分配給新變量來創(chuàng)建數(shù)組的副本。
如果我們通過值創(chuàng)建數(shù)組的副本并在原始數(shù)組的值中進行了一些更改,則它不會反映在該數(shù)組的副本中。 而且,如果我們通過引用創(chuàng)建數(shù)組的副本,并對原始數(shù)組的值進行了一些更改,那么它將反映在該數(shù)組的副本中。 如以下示例所示:
語法:
//按值創(chuàng)建數(shù)組的副本 arr := arr1 //通過引用創(chuàng)建數(shù)組的副本 arr := &arr1
讓我們借助示例來討論這個概念:
范例1:
//按值復制數(shù)組
package main
import "fmt"
func main() {
//創(chuàng)建和初始化數(shù)組
//使用簡寫聲明
my_arr1 := [5]string{"Scala", "Perl", "Java", "Python", "Go"}
//將數(shù)組復制到新變量中
//在這里,元素按值傳遞
my_arr2 := my_arr1
fmt.Println("Array_1: ", my_arr1)
fmt.Println("Array_2:", my_arr2)
my_arr1[0] = "C++"
//在這里,當我們復制數(shù)組時
//按值放入另一個數(shù)組
//然后對原始內(nèi)容進行更改
//數(shù)組不反映在
//該數(shù)組的副本
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]
通過引用復制數(shù)組示例:
//通過引用復制數(shù)組
package main
import "fmt"
func main() {
//創(chuàng)建和初始化數(shù)組
//使用簡寫聲明
my_arr1 := [6]int{12, 456, 67, 65, 34, 34}
//將數(shù)組復制到新變量中
//在這里,元素通過引用傳遞
my_arr2 := &my_arr1
fmt.Println("Array_1: ", my_arr1)
fmt.Println("Array_2:", *my_arr2)
my_arr1[5] = 1000000
//在這里,當我們復制數(shù)組時
//通過引用放入另一個數(shù)組
//然后對原始內(nèi)容進行更改
//數(shù)組將反映在
//該數(shù)組的副本
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]