Как создать копию массива в Go или Golang?

Первоначально было опубликовано здесь!

Чтобы создать копию массива в Go или golang, мы можем просто присвоить массив другой переменной с помощью оператора = (присвоение), и содержимое массива будет скопировано в новую переменную.

TL;DR

package main

import "fmt"

func main(){
    // array of elements
    nums := [5]int{1, 2, 3, 4, 5}

    // copy the `nums` array elements to the
    // `numsCopy` using the `=` operator (assignment)
    numsCopy := nums

    // log to the elements of the
    // `numsCopy` variable to the console
    fmt.Println(numsCopy) // [1 2 3 4 5]

    // mutate the contents in the `numsCopy` array
    // to check to see if the contents in
    // the original array `nums` changes
    numsCopy[0] = 11

    // log both the `numsCopy` and `nums` array
    fmt.Println(numsCopy, nums) // [11 2 3 4 5] [1 2 3 4 5]
}
Вход в полноэкранный режим Выйти из полноэкранного режима

Например, допустим, у нас есть массив из 5 чисел, как показано ниже,

package main

func main(){
    // array of elements
    nums := [5]int{1, 2, 3, 4, 5}
}
Войти в полноэкранный режим Выйти из полноэкранного режима

Теперь для копирования элементов массива nums мы можем определить другую переменную numsCopy и затем использовать оператор =, а затем просто присвоить ей значения массива nums.

Это можно сделать следующим образом,

package main

func main(){
    // array of elements
    nums := [5]int{1, 2, 3, 4, 5}

    // copy the `nums` array elements to the
    // `numsCopy` using the `=` operator (assignment)
    numsCopy := nums
}
Войти в полноэкранный режим Выйти из полноэкранного режима

Теперь, чтобы проверить, есть ли в numsCopy элементы, как в переменной nums, мы можем сначала вывести переменную numsCopy на консоль, используя метод Println() из стандартного пакета fmt следующим образом,

package main

import "fmt"

func main(){
    // array of elements
    nums := [5]int{1, 2, 3, 4, 5}

    // copy the `nums` array elements to the
    // `numsCopy` using the `=` operator (assignment)
    numsCopy := nums

    // log to the elements of the
    // `numsCopy` variable to the console
    fmt.Println(numsCopy) // [1 2 3 4 5]
}
Вход в полноэкранный режим Выйти из полноэкранного режима

Теперь давайте изменим содержимое массива numsCopy и посмотрим, изменится ли содержимое массива nums. Это можно сделать следующим образом,

package main

import "fmt"

func main(){
    // array of elements
    nums := [5]int{1, 2, 3, 4, 5}

    // copy the `nums` array elements to the
    // `numsCopy` using the `=` operator (assignment)
    numsCopy := nums

    // log to the elements of the
    // `numsCopy` variable to the console
    fmt.Println(numsCopy) // [1 2 3 4 5]

    // mutate the contents in the `numsCopy` array
    // to check to see if the contents in
    // the original array `nums` changes
    numsCopy[0] = 11

    // log both the `numsCopy` and `nums` array
    fmt.Println(numsCopy, nums) // [11 2 3 4 5] [1 2 3 4 5]
}
Войти в полноэкранный режим Выйти из полноэкранного режима

Как видите, содержимое массива numsCopy изменилось, но не содержимое массива nums. Это доказывает нам, что массив nums успешно скопирован в переменную массива numsCopy. Ура 🥳!

Посмотрите приведенный выше код в реальном времени в The Go Playground.

На этом все 😃.

Не стесняйтесь поделиться, если вы нашли это полезным 😃.


Оцените статью
devanswers.ru
Добавить комментарий