Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ 長さと容量 | 配列とスライス
Go入門

book長さと容量

メニューを表示するにはスワイプしてください

配列やスライスの長さは、len 関数を使って取得可能。

index.go

index.go

copy
12345
randomNumbers := [] int { 1, 4, 5, 7, 9, 10, 12 } fmt.Println(len(randomNumbers)) // Output: 7 numbersSlice := randomNumbers[2:7] fmt.Println(len(numbersSlice)) // Output: 5

配列やスライスの容量は、cap 関数を使用して確認可能:

randomNumbers := [] int { 1, 4, 5, 7, 9, 10, 12 }
fmt.Println(cap(randomNumbers)) // Output: 7

numbersSlice := randomNumbers[2:7]
fmt.Println(cap(numbersSlice)) // Output: 5

配列の長さと容量は常に同じ。一方、スライスの場合は容量が長さと異なる場合がある。例えば、配列からスライスを作成した場合、容量は長さより大きくなる:

index.go

index.go

copy
1234
randomNumbers := [7] int { 1, 4, 5, 7, 9, 10, 12 } numbersSlice := randomNumbers[1:3] fmt.Println(len(numbersSlice)) // Output: 2 fmt.Println(cap(numbersSlice)) // Output: 6

スライスのキャパシティは、スライスのstartingIndexから元の配列の末尾までの要素数を指します。上記の例では、これは6です。

スライスを変更すると、元の配列も変更されることに注意してください。したがって、与えられた例では、スライスに要素(または値)を追加すると、元の配列のスライスの終了インデックスの次の要素が更新されます。つまり、スライスのサイズが増加し、追加された要素や値に基づいて元の配列の要素が更新されます。以下の例でより明確になります。

index.go

index.go

copy
12345
randomNumbers := [7] int { 1, 4, 5, 7, 9, 10, 12 } numbersSlice := randomNumbers[1:3] fmt.Println(randomNumbers) // Output: [1 4 5 7 9 10 12] numbersSlice = append(numbersSlice, 20, 30, 40) fmt.Println(randomNumbers) // Output: [1 4 5 20 30 40 12]

キャパシティは、スライスに追加できる要素数を判断するのに役立ちます。スライスのキャパシティを超えると、append関数は元の配列の一部とは接続されていない新しいスライスを作成して返します。そのため、元の配列から切り離されます。

次の例のように、スライスにさらに要素を追加しても元の配列は変更されません。

index.go

index.go

copy
12345678
numbers := [] int { 1, 2, 3, 4 } numSlice := numbers[1:3] fmt.Println(numbers) // Outputs: [1 2 3 4] fmt.Println(numSlice) // Outputs: [2 3] fmt.Println(cap(numSlice)) // Outputs: 3 numSlice = append(numSlice, 9, 10) fmt.Println(numSlice) // Outputs: [2 3 9 10] fmt.Println(numbers) // Outputs: [1 2 3 4]

これは、スライスの容量が3であり、それを超えたために発生しました。その結果、append関数は元の配列を参照しない新しいスライスを返しました。

question mark

スライス z に要素 alphabets を追加する正しい構文はどれですか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 5.  4

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 5.  4
some-alt