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

bookSlices

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

スライスは配列に似ていますが、動的な長さを持ち、配列よりも柔軟に利用できるデータ構造です。

スライスを作成するには、配列と同じ構文を使用しますが、この場合はサイズを指定しません。

varキーワードを使ったスライスの作成方法:

// Creates an empty slice with no elements
var sliceName [] dataType

// Creates a slice with the specified elements
var sliceName = [] dataType {element_1, element_2, ...}

:=演算子を使ったスライスの作成方法:

// Creates a slice with the specified elements
sliceName := [] dataType { element_1, element_2, ... }

スライスに要素を追加するには、append関数を使用します。append関数は、追加された要素を含む新しいスライスを返し、それを元のスライス変数に格納できます。例を見ればより理解しやすくなります。append関数の基本構文は次のとおりです:

append(originalSlice, newElement1, newElement2, …)

次のコードは、append関数の使用例を示しています:

index.go

index.go

copy
1234
randomNumbers := [] int { 1, 4, 5} fmt.Println(randomNumbers) // Output: [1 4 5] randomNumbers = append(randomNumbers, 7, 9) fmt.Println(randomNumbers) // Output: [1 4 5 7 9]

配列内の要素にアクセスできるのと同様に、次の構文を使用して配列の一部を参照することも可能です。

index.go

index.go

copy
1
arrayName[startIndex:endIndex + 1]

startingIndex から endingIndex までのすべての要素が抽出されます。endingIndex + 1 を指定する必要がある点に注意してください。例を見ればより明確になります。例えば:

index.go

index.go

copy
12
var numbers = [10] int { 2, 4, 6, 9, 10, 12, 14, 16, 17, 19 } fmt.Println(numbers[4:9]) // Output: [10 12 14 16 17]

インデックス 4 から 9 までの要素を抽出(インデックス 4 を含み、インデックス 9 を含まない)する構文表現。

index.go

index.go

copy
1
arrayName[startingIndex:endingIndex + 1]

この抽出した配列の一部を変数に格納することで、スライスを作成することも可能です。

index.go

index.go

copy
123
var numbers = [10] int { 2, 4, 6, 9, 10, 12, 14, 16, 17, 19 } numbersPart := numbers[2:7] fmt.Println(numbersPart) // Output: [6 9 10 12 14]

このようなスライスは、作成元の配列の一部を参照している点に注意が必要です。そのため、スライス内で行った変更は元の配列にも反映されます。

index.go

index.go

copy
12345678910111213
package main import "fmt" func main() { var pin = [4] int { 1, 2, 3, 4 } part := pin[1:3] fmt.Println(pin) // Output [1, 2, 3, 4] fmt.Println(part) // Output: [2, 3] part[0] *= 2 part[1] *= 3 fmt.Println(part) // Output [4, 9] fmt.Println(pin) // Output [1, 4, 9, 4] }
question mark

次のコードの出力は何ですか?

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

すべて明確でしたか?

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

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

セクション 5.  3

AIに質問する

expand

AIに質問する

ChatGPT

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

セクション 5.  3
some-alt