配列:固定長のコレクション
配列リテラル、インデックスアクセス、長さ
「配列:固定長のコレクション」はCoddyKit上の無料Go Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはGo Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Go Academyコースには全4レッスンが含まれています。
配列とは
Go の配列は、同じ型の要素が並んだ固定長のシーケンスです。長さは型の一部であるため、[3]int と [4]int は異なる型です。
- 配列は値型です。代入すると配列全体がコピーされます
- 長さは常にコンパイル時に決まります
- 直接使うことはまれで、ほとんどの用途ではスライスが推奨されます
配列リテラル
リテラルを使って配列を宣言し、初期化します。
package main
func main() {
primes := [5]int{2, 3, 5, 7, 11}
names := [3]string{"Alice", "Bob", "Carol"}
flags := [4]bool{true, false, true, false}
_ = primes; _ = names; _ = flags
}配列の長さとインデックス指定
長さには len() を使用し、要素の読み書きには0始まりのインデックスを使用します。
package main
import "fmt"
func main() {
scores := [3]int{90, 85, 92}
fmt.Println(len(scores)) // 3
fmt.Println(scores[0]) // 90
scores[1] = 100
fmt.Println(scores) // [90 100 92]
}配列リテラルでの省略記号
[...] を使用すると、要素数をコンパイラーに数えさせることができます。
package main
import "fmt"
func main() {
days := [...]string{"Mon","Tue","Wed","Thu","Fri"}
fmt.Println(len(days)) // 5
}配列は値型
配列を代入または引数として渡すと、Go は配列全体をコピーします。コピーを変更しても、元の配列には影響しません。
package main
import "fmt"
func main() {
a := [3]int{1, 2, 3}
b := a // full copy
b[0] = 99
fmt.Println(a) // [1 2 3] — unchanged
fmt.Println(b) // [99 2 3]
}配列の比較
同じ型で同じ長さの配列は、== と != で比較できます。
package main
import "fmt"
func main() {
x := [3]int{1, 2, 3}
y := [3]int{1, 2, 3}
z := [3]int{1, 2, 4}
fmt.Println(x == y) // true
fmt.Println(x == z) // false
}2次元配列
配列をネストして、グリッドや行列を作成できます。
package main
import "fmt"
func main() {
grid := [2][3]int{
{1, 2, 3},
{4, 5, 6},
}
fmt.Println(grid[1][2]) // 6
}配列の反復処理
従来の for ループまたは range を使用して反復処理します。
package main
import "fmt"
func main() {
nums := [4]int{10, 20, 30, 40}
for i, v := range nums {
fmt.Printf("[%d] = %d\n", i, v)
}
}配列とスライス
主な違いは次のとおりです。
- 配列:固定サイズ、値型、サイズが型の一部
- スライス:動的サイズ、参照型、配列によってバッキングされる
- 実際には、コンパイル時に固定サイズが必要な場合(例:SHA-256 ハッシュの
[32]byte)を除き、スライスを使用してください
よくある落とし穴
次の点に注意してください。
- インデックスが範囲外:
i >= len(arr)の場合、Go は実行時に panic を発生させます - 大きな配列を関数に渡すと高コストなコピーが発生するため、代わりにポインターまたはスライスを使用してください
[3]intと[4]intが互換性のない型であることを忘れないでください
簡単な確認
[...]string{"a","b","c"} の長さはいくつですか。
まとめ:配列
主なポイントは次のとおりです。
- 配列には固定されたコンパイル時の長さがあり、それが型の一部になります
- 配列は値型で、代入するとすべての要素がコピーされます
len()と0始まりのインデックスを使用します- ほとんどのコレクション用途ではスライスを優先してください
練習課題
整数5個の配列を宣言し、3番目の要素に値100を代入してから、range を使って配列を出力してください。
よくある質問
「配列:固定長のコレクション」レッスンは無料ですか?
はい。「配列:固定長のコレクション」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Go Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Go Academyコースには全4レッスンが含まれています。
「配列:固定長のコレクション」で何を学びますか?
配列リテラル、インデックスアクセス、長さ ブラウザで直接実行するハンズオンコードでGo Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Go Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのGo Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「配列:固定長のコレクション」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このGo Academyレッスンでコードを書いて実行できますか?
はい。すべてのGo Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 配列:固定長のコレクション
- スライス:動的なリスト
- マップ:キーと値のストア
- rangeによるコレクションの反復