0Pricing
Go Academy · レッスン

配列:固定長のコレクション

配列リテラル、インデックスアクセス、長さ

「配列:固定長のコレクション」は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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 配列:固定長のコレクション
  2. スライス:動的なリスト
  3. マップ:キーと値のストア
  4. rangeによるコレクションの反復
← Go Academyに戻る