スライスのコピー
CoddyのGOジャーニー「基礎」セクションの一部。レッスン 82/109。
Goのcopy関数を使うと、あるスライスから別のスライスへ要素をコピーできます。
コピー元のスライスとコピー先のスライスを作成します。
source := []int{1, 2, 3}
dest := make([]int, 2) // 長さが2のコピー先
// コピー元からコピー先へコピーする
copied := copy(dest, source)
fmt.Println("Source:", source)
fmt.Println("Destination:", dest)
fmt.Println("Number of elements copied:", copied)結果:
Source: [1 2 3]
Destination: [1 2]
Number of elements copied: 2copy関数は、コピー先のスライスに収まる要素数まで、かつコピー元にある要素数を超えない範囲で要素をコピーします。つまり、2つの長さのうち短い方の数だけコピーします。コピー元の方が短い場合、コピー先の残りの要素は変更されません。
チャレンジ
初心者このチャレンジでは、copy関数を使って、あるスライスから別のスライスへ要素をコピーする練習をします。
2つのスライスがあります。果物の名前を含むsourceと、make([]string, 3)で作成された長さ3のスライスdestinationです。copy関数を使って、sourceからdestinationへ要素をコピーしましょう。
コピーした後、destinationスライスの内容を出力します。
自分で試してみよう
package main
import "fmt"
func main() {
// 果物の名前を含む元のスライス
source := []string{"apple", "banana", "cherry", "date"}
// 3つの要素を格納できるdestinationスライスを作成する
destination := make([]string, 3)
// TODO: copy関数を使用してsourceからdestinationに要素をコピーする
// destinationスライスを出力する
fmt.Println("Destination slice:", destination)
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Goオンラインコンパイラ