Golang 入門:コピー機能が動作しない原因、雷対策。

次のコードでは、出力には何も表示されませんが、copy 関数は実際に実行されています。これはなぜでしょうか。

	var iArray1 = []int{0, 1, 2, 3, 4, 5, 6}
	var iArray2  []int
	copy(iArray2, iArray1)
	for _, v := range iArray2 {
		fmt.Printf("v: %v\n", v)
	}

データを調べたところ、go の元の copy() は小さい方の配列スライスの要素数に応じてコピーするものであることがわかりました。上記の実行で結果が得られない理由は、iArray2 という名前のスライスには初期値がなく、定義後の定義長もないため、デフォルトが 0 であるため、iArray1 が iArray2 にコピーされますが、0 しかコピーされないため、出力結果はありません。

次に、これを変更して、iArray2 に初期長を与えましょう。

赤い矢印の位置を注意深く見て、iArray2 に 10 の長さを与えてから、copy() を実行して、iArray1 を iArray2 にコピーします。出力を確認すると、確かにコピーは成功しましたが、以下の項目はすべて 0 です。その理由はやはり、iArray1 が iArray2 にコピーする値は 7 つだけであるため、iArray1 の残りの 3 つの値は上書きされず、デフォルトでは 0 のままです。

copy() は次のように使用することもできます

Go 言語の文法は非常に細かい部分が多く、非常に独創的で、一緒に学習している友達と一緒に議論することを歓迎します。

おすすめ

転載: blog.csdn.net/weixin_45963929/article/details/126103236