English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основной учебник Golang

Контрольные операторы в Golang

Функции (Function) и методы в Golang

Структуры (Struct) в Golang

Срезы (Slice) и массивы в Golang

Строки (String) в Golang

Указатели (Pointer) в Golang

Интерфейсы (Interface) в Golang

Конкурентоспособность (Concurrent) в Golang

Исключения (Error) в Golang

Другие вопросы Golang

Копирование массивов в языке программирования Go

Язык программирования 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]