English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Язык программирования GolangМассивОчень похож на другие языки программирования. В программе, иногда нам нужно хранить группу данных одного типа, например, список оценок студентов. Этот тип集合 хранится в программе с помощью массивов. Массив - это фиксированной длины последовательность, используемая для хранения элементов одного типа в памяти. Язык программирования Golang не предоставляет специальных встроенных функций для копирования одного массива в другой. Но мы можем создать копию массива, просто присвоив его новому переменной через значения или ссылки.
Если мы создаем копию массива через значения и вносим некоторые изменения в значения исходного массива, это не отразится на копии массива. 而且, если мы создаем копию массива через ссылки и вносим некоторые изменения в значения исходного массива, это будет отражено в копии массива. Как показано в следующем примере:
Синтаксис:
// создание копии массива по значению arr := arr1 // создание копии массива по ссылке arr := &arr1
Давайте рассмотрим этот концепт с помощью примера:
Пример 1:
// копирование массива по значению package main import "fmt" func main() { // создание и инициализация массива // краткое объявление my_arr1 := [5]string{"Scala", "Perl", "Java", "Python", "Go"} // копируем массив в новую переменную // здесь, элементы передаются по значению my_arr2 := my_arr1 fmt.Println("Array_1: ", my_arr1) fmt.Println("Array_2:", my_arr2) my_arr1[0] = "C++" // здесь, когда мы копируем массив // по значению в другой массив // затем изменения в исходном содержании // массив не отражен в // копия массива 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]
Пример копирования массива по ссылке:
// копирование массива по ссылке package main import "fmt" func main() { // создание и инициализация массива // краткое объявление my_arr1 := [6]int{12, 456, 67, 65, 34, 34} // копируем массив в новую переменную // здесь, элементы передаются по ссылке my_arr2 := &my_arr1 fmt.Println("Array_1: ", my_arr1) fmt.Println("Array_2:", *my_arr2) my_arr1[5] = 1000000 // здесь, когда мы копируем массив // через ссылку в другой массив // затем изменения в исходном содержании // массив будет отражен в // копия массива 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]