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

Golang 基礎チュートリアル

Golang 制御文

Golang ファンクション & メソッド

Golang 構造体

Golang シート & 配列

Golang 文字列(String)

Golang ポインタ

Golang インターフェース

Golang 并行

Golang エラ(Error)

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("配列_",1: ", my_arr1)
    fmt.Println("配列_",2:", my_arr2)
    my_arr1[0] = "C++"
    //ここでは、配列をコピーする際に
    //別の配列に値で入れると
    //その後、元の内容を変更します
    //配列は反映されません
    //この配列のコピー
    fmt.Println("\n配列_",1: ", my_arr1)
    fmt.Println("配列_",2: ", my_arr2)
}

出力:

配列_1:  [Scala Perl Java Python Go]
配列_2: [Scala Perl Java Python Go]
配列_1:  [C++ Perl Java Python Go]
配列_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("配列_",1: ", my_arr1)
    fmt.Println("配列_",2:", *my_arr2)
    my_arr1[5] = [ 1000000
    //ここでは、配列をコピーする際に
    //別の配列に参照で入れると
    //その後、元の内容を変更します
    //配列は以下に反映されます
    //この配列のコピー
    fmt.Println("\n配列_",1: ", my_arr1)
    fmt.Println("配列_",2:", *my_arr2)
}

出力:

配列_1:  [12 456 67 65 34 34]
配列_2: [12 456 67 65 34 34]
配列_1:  [12 456 67 65 34 1000000]
配列_2: [12 456 67 65 34 1000000]