Go練習問題2-07:配列を理解しよう

記事内に商品プロモーションを含む場合があります

Go言語の初心者向け問題2-7:配列を理解しよう

この問題を解くために必要な知識:
レベル1の知識論理演算子と代入演算子条件分岐(if-else文)条件分岐(switch文)ループ処理(for文)ラベルとgoto文無限ループ配列スライスとキャパシティ整列と検索マップループ処理(range文)サードパーティパッケージ

<<前の問題 問題集Top 次の問題>>

Go言語の文法「配列」とは





ここでは配列の意味や使い方を復習します。必要ない方はここをクリックして練習問題へ飛びましょう。

配列の定義と使い方

Go言語において、配列は固定長のデータ構造です。配列は、同じ型の要素を複数持つことができますが、その長さは宣言時に固定され、変更することはできません。

配列の宣言と初期化は以下のように行います。

package main

import "fmt"

func main() {
    // 5つの整数を持つ配列を宣言し、初期化
    var numbers [5]int = [5]int{10, 20, 30, 40, 50}
    
    // 配列の内容を表示
    fmt.Println(numbers)
}

この例では、5つの整数を持つ配列を宣言し、初期化しています。numbersという変数には、10, 20, 30, 40, 50が格納されており、fmt.Println(numbers)でその内容が表示されます。

配列要素へのアクセス

配列要素にはインデックスを用いてアクセスします。Goの配列インデックスは0から始まります。以下の例では、配列の3番目の要素にアクセスしています。

package main

import "fmt"

func main() {
    numbers := [5]int{10, 20, 30, 40, 50}
    
    // 3番目の要素にアクセス
    fmt.Println("3番目の要素:", numbers[ 2 ])
}

この例では、numbers[ 2 ]を使用して3番目の要素にアクセスしています。結果として30が出力されます。

配列のループ処理

Goでは、forループを用いて配列の各要素を順に処理することが可能です。以下の例では、配列の全要素を順に表示しています。

package main

import "fmt"

func main() {
    numbers := [5]int{10, 20, 30, 40, 50}
    
    // 配列の全要素を表示
    for i := 0; i < len(numbers); i++ {
        fmt.Println(numbers[i])
    }
}

この例では、len(numbers)で配列の長さを取得し、for文を使ってすべての要素を表示しています。

配列の注意点

Goの配列はサイズが固定されているため、動的にサイズを変更する場合には「スライス」を使う必要があります。

また、配列は値として扱われるため、関数に配列を渡した場合、その内容が変更されても元の配列には影響を与えません。

まとめ

Go言語における配列は、固定サイズで同じ型のデータをまとめて扱うために使用される基本的なデータ構造です。

これを理解することで、より複雑なデータ操作ができるようになります。

Go練習問題2-7:配列内の要素の合計を計算しよう

配列を使って、いくつかの整数を格納し、それらの合計を計算するプログラムを作成してください。

このプログラムは、配列内の全ての要素を順に処理して、その合計値を求め、最終的に結果を表示するものです。

この問題の要件

以下の要件に従ってコードを完成させてください。

  • 整数型の配列numbersを宣言し、5つの初期値(1, 2, 3, 4, 5)を代入すること。
  • 変数sumを宣言し、0で初期化すること。
  • 配列の全要素を順に処理して、sumに合計値を格納すること。
  • 最終的に、sumの値を表示すること。

ただし、以下のような実行結果となるコードを書くこと。

*****↓↓正解コードの実行結果の例↓↓*****

配列の内容: [ 1 2 3 4 5]
numbers[ 0] = 1
numbers[ 1] = 2
numbers[ 2] = 3
numbers[ 3] = 4
numbers[ 4] = 5
配列の要素の合計: 15

この問題を解くヒント

1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。

ヒント1【コードの構成を見る】

正解のコードは上から順に以下のような構成となっています。

1.import "fmt" による標準ライブラリのインポート

2.main 関数の定義
 2-1. 整数型の配列 numbers の宣言と初期化
  2-1-1. var numbers [5]int = [5]int{1, 2, 3, 4, 5} の宣言
 2-2. 配列の内容を表示するための fmt.Println(numbers)

 2-3. 配列の各要素にアクセスし、それを表示するための for ループ
  2-3-1. fmt.Printf を使用した各要素の表示

 2-4. 配列要素の合計値を保持する変数 sum の宣言と初期化

 2-5. 配列の全要素を合計し、その結果を変数 sum に格納するための for ループ
  2-5-1. sum += numbers[i] による合計計算

 2-6. 合計結果を表示するための fmt.Println(sum)

ヒント2【穴埋め問題にする】

以下のコードをコピーし、コメントに従ってコードを完成させて下さい。

package main

import "fmt"

// メイン関数: プログラムの開始点
func main() {
    // 配列を宣言し初期化します(整数型の配列)
    var numbers [5]int = [5]int{1, 2, 3, 4, 5}

    // 配列の内容を表示します
    fmt.Println(/*【穴埋め問題1】ここに配列の内容を表示するコードを書いてください*/)

    // 配列の各要素にアクセスして表示します
    for i := 0; i < len(numbers); i++ {
        fmt.Printf(/*【穴埋め問題2】ここに配列の各要素を表示するコードを書いてください*/)
    }

    // 配列の要素を合計するための変数
    var sum int

    // ループを使って配列のすべての要素を合計します
    for i := 0; i < len(numbers); i++ {
        sum += numbers[i]
    }

    // 合計を表示します
    fmt.Println(/*【穴埋め問題3】ここに配列の合計を表示するコードを書いてください*/)
}

 

このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。

解答例

この問題の一つの正解例とそのコードの解説を以下に示します。

正解コードの例

例えば以下のようなプログラムが考えられます。

package main

import "fmt"

func main() {
    // 配列を宣言し初期化します(整数型の配列)
    var numbers [5]int = [5]int{1, 2, 3, 4, 5}

    // 配列の内容を表示します
    fmt.Println("配列の内容:", numbers)

    // 配列の要素を合計するための変数
    var sum int

    // ループを使って配列の全要素を合計します
    for i := 0; i < len(numbers); i++ {
        sum += numbers[i]
    }

    // 合計を表示します
    fmt.Println("配列の要素の合計:", sum)
}

正解コードの解説

このGoコードでは、基本的なプログラミング概念である「配列」とその操作を学びます。以下に、コードの各部分とその役割を詳しく説明します。

1. プログラムの全体構成

このコードは、Go言語で配列を使っていくつかの整数を格納し、それらの合計を計算するシンプルなプログラムです。プログラムはmain関数内で実行され、最初に配列の宣言と初期化を行います。

配列の宣言と初期化

var numbers [5]int = [5]int{1, 2, 3, 4, 5}

ここで、整数型の配列numbersを宣言し、5つの初期値(1, 2, 3, 4, 5)を代入しています。Goの配列は、同じ型のデータを複数保持する固定長のデータ構造です。この配列のサイズは宣言時に固定され、変更できません。

配列の内容の表示

fmt.Println(numbers)

この行では、配列全体を出力しています。fmt.Printlnは、指定された値を標準出力に表示するためのGoの標準ライブラリ関数です。

配列要素の個別表示

for i := 0; i < len(numbers); i++ {
    fmt.Printf("numbers[%d] = %d\n", i, numbers[i])
}

この部分では、forループを使って配列の各要素にアクセスし、それを表示しています。len(numbers)は配列の長さを取得し、ループはこの長さ分繰り返されます。fmt.Printfはフォーマットされた出力を行うための関数です。

配列の合計計算

var sum int
for i := 0; i < len(numbers); i++ {
    sum += numbers[i]
}

ここでは、変数sumを使って配列内のすべての要素を合計しています。sum += numbers[i]は、現在のsumに配列の要素を順次加算していく操作です。

合計値の表示

最後に、計算した合計値を出力します。この行で、プログラムは計算結果をユーザーに表示します。

<<前の問題 問題集Top 次の問題>>

この問題への質問・コメント

この問題を作成するにあたりAIを活用しています。

問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。






    Go練習問題集へ戻る
    トップページへ戻る