English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
No linguagem de programação GoArrayÉ muito semelhante a outras linguagens de programação. Em um programa, às vezes precisamos armazenar um grupo de dados do mesmo tipo, por exemplo, uma lista de notas de alunos. Este tipo de conjunto é armazenado em um array no programa. Um array é uma sequência de comprimento fixo usada para armazenar elementos do mesmo tipo na memória. O Go não fornece uma função específica para copiar um array para outro. Mas podemos criar uma cópia da array simplesmente atribuindo o array a uma nova variável por valor ou referência.
Se criarmos uma cópia da array por valor e fizermos algumas alterações no valor original da array, essas alterações não refletirão na cópia da array. E se criarmos uma cópia da array por referência e fizermos algumas alterações no valor original da array, essas alterações refletirão na cópia da array. Como mostrado no seguinte exemplo:
Sintaxe:
//criar cópia da array por valor arr := arr1 //criar cópia da array por referência arr := &arr1
Vamos discutir este conceito com um exemplo:
Exemplo1:
//copia de array por valor package main import "fmt" func main() { //criar e inicializar a array //declaração abreviada my_arr1 := [5]string{"Scala", "Perl", "Java", "Python", "Go"} //copiar a array para uma nova variável //Aqui, os elementos são passados por valor my_arr2 := my_arr1 fmt.Println("Array_1:1) fmt.Println("Array_2:, my_arr2) my_arr1[0] = "C++" //Aqui, quando copiamos a array //colocado em outra array por valor //então alterar o conteúdo original //a array não refletirá em //cópia da array fmt.Println("\nArray_1:1) fmt.Println("Array_2:2) }
Saída:
Array_1: Array_2: [Scala Perl Java Python Go] Array_1:++ Perl Java Python Go] Array_2:
Exemplo de cópia de array por referência:
//copia de array por referência package main import "fmt" func main() { //criar e inicializar a array //declaração abreviada my_arr1 := [6]int{12, 456, 67, 65, 34, 34} //copiar a array para uma nova variável //Aqui, os elementos são passados por referência my_arr2 := &my_arr1 fmt.Println("Array_1:1) fmt.Println("Array_2:", *my_arr2) my_arr1[5] = [ 1000000 //Aqui, quando copiamos a array //colocado em outra array por referência //então alterar o conteúdo original //a array refletirá em //cópia da array fmt.Println("\nArray_1:1) fmt.Println("Array_2:", *my_arr2) }
Saída:
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]