Go言語の初心者向け問題1-1:変数と定数を理解しよう
この問題を解くために必要な知識:
コメントの書き方、変数と定数、基本データ型、型のエイリアス、文字列操作、ポインタの基本、nilの概念、ビルトイン関数、算術演算子とビット演算子、標準入力と出力、import文の使用
<<前の問題 | 問題集Top |
次の問題>> |
Go言語の文法「変数と定数」とは
ここでは変数と定数の意味や使い方を復習します。必要ない方はここをクリックして練習問題へ飛びましょう。
Go言語の変数とは?
変数とは、データを一時的に保存しておくための「箱」のようなものです。変数には名前を付けることができ、後からその名前を使って中身を取り出したり変更したりできます。
変数の宣言と初期化
Goでは、変数を宣言する際に var
キーワードを使用します。変数を宣言するときに初期値を設定することもできます。例を見てみましょう。
var age int = 25
このコードでは、age
という名前の変数を宣言し、整数型 (int
) の値 25
を格納しています。宣言と初期化は同時に行うのが一般的です。
型推論を使った宣言
Goは非常に賢く、変数の型を自動的に判断してくれます。これを「型推論」と呼びます。型を明示的に指定しなくても、次のように書くことができます。
name := "Taro"
ここでは、name
という変数に文字列 "Taro"
を代入しています。Goは自動的に name
の型を string
と推論します。
Go言語の定数とは?
定数は、一度値を設定すると変更できないデータを表します。定数はプログラムの実行中に変わらない値を扱うときに使います。例えば、円周率や税率などです。
定数の宣言
定数は const
キーワードを使って宣言します。次の例を見てみましょう。
const pi = 3.14159
このコードでは、pi
という名前の定数を宣言し、値 3.14159
を設定しています。定数の利点は、誤って値を変更することを防ぐことができる点です。
3. 変数と定数の使い分け
変数と定数の使い分けは、プログラムを書く上で非常に重要です。以下のような場合に使い分けを行います。
- 変数: 後から値を変更したい場合(例: スコア、カウント、ユーザー入力など)
- 定数: 変更する必要がない値を扱う場合(例: 数学定数、アプリケーション設定など)
4. 実際にコードを書いてみよう
最後に、変数と定数を使った簡単な例を見てみましょう。
package main import ( "fmt" ) func main() { const pi = 3.14159 // 定数の宣言 var radius float64 = 5 // 変数の宣言と初期化 area := pi * radius * radius // 面積の計算 fmt.Printf("半径 %.2f の円の面積は %.2f です。\n", radius, area) }
このコードは、円の半径を変数として扱い、円周率を定数として使っています。これにより、円の面積を計算して出力します。
5. まとめ
Go言語の「変数」と「定数」はプログラムの基礎であり、データを効果的に管理するために欠かせないものです。
変数は値が変わるもの、定数は値が変わらないもの、と覚えておきましょう。
Go練習問題1-1:円の面積を計算するプログラムを作成しよう
円の面積を計算するプログラムを作成しましょう。
ユーザーから円の半径を入力してもらい、その値を使って円の面積を計算します。計算した面積を画面に表示することを目標とします。
この問題の要件
以下の要件に従ってコードを完成させてください。
const
を使用して円周率を定数pi
として宣言すること。- 円周率は3.14159とすること。
var
を使用して半径を変数radius
として宣言すること。fmt.Scan
を使用して、ユーザーからradius
を入力すること。- 円の面積を計算し、その結果を
fmt.Printf
で小数点第2位まで表示すること。 - 計算が完了した後、”計算が完了しました。” というメッセージを表示すること。
ただし、以下のような実行結果となるコードを書くこと。
*****↓↓正解コードの実行結果の例↓↓*****
円の半径を入力してください: 10 半径 10.00 の円の面積は 314.16 です。 計算が完了しました。
この問題を解くヒント
1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。
正解のコードは上から順に以下のような構成となっています。
1.main
パッケージの宣言
2.fmt
パッケージのインポート
3.main
関数の定義
3-1. pi
定数の宣言(円周率3.14159)
3-2. radius
変数の宣言(float64
型)
3-3. ユーザーに半径の入力を求めるプロンプトを表示
3-4. fmt.Scan
を用いて半径の入力をradius
変数に格納
3-5. 円の面積を計算し、area
変数に格納
3-6. fmt.Printf
を用いて半径と計算された面積を小数点第2位まで表示
3-7. message
文字列変数を宣言し、「計算が完了しました。」というメッセージを格納
3-8. fmt.Println
を用いてmessage
の内容を表示
以下のコードをコピーし、コメントに従ってコードを完成させて下さい。
package main import ( "fmt" ) func main() { // 定数の宣言 const pi = 3.14159 // 円周率 // 変数の宣言 var radius float64 // ユーザーから半径を入力してもらう fmt.Print("円の半径を入力してください: ") /* 【穴埋め問題1】 ここにユーザーから入力を受け取るコードを書いてください。 */ // 面積の計算 /* 【穴埋め問題2】 ここに面積を計算するコードを書いてください。 */ // 結果を出力 /* 【穴埋め問題3】 ここに結果を出力するコードを書いてください。 */ // 文字列操作 var message string = "計算が完了しました。" /* 【穴埋め問題4】 ここに完了メッセージを出力するコードを書いてください。 */ }
このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。
解答例
この問題の一つの正解例とそのコードの解説を以下に示します。
正解コードの例
例えば以下のようなプログラムが考えられます。
package main import ( "fmt" ) func main() { // 定数の宣言 const pi = 3.14159 // 円周率 // 変数の宣言 var radius float64 // ユーザーから半径を入力してもらう fmt.Print("円の半径を入力してください: ") fmt.Scan(&radius) // 面積の計算 area := pi * radius * radius // 結果を出力 fmt.Printf("半径 %.2f の円の面積は %.2f です。\n", radius, area) // 文字列操作 var message string = "計算が完了しました。" fmt.Println(message) }
正解コードの解説
このGoコードでは、ユーザーが入力した円の半径を基に円の面積を計算し、その結果を表示するプログラムを作成しています。各部分を順に解説します。
パッケージ宣言
package main
Goプログラムは、最初にパッケージを宣言します。main
パッケージは、実行可能なプログラムのエントリーポイントとして使用されます。
インポート宣言
import ( "fmt" )
fmt
パッケージは、フォーマットされた入出力を行うための標準ライブラリです。ここでは、ユーザー入力や結果の表示に使用します。
メイン関数の定義
func main() {
main
関数は、プログラムの実行が始まる場所です。Goプログラムでは必須の関数です。
定数の宣言
const pi = 3.14159 // 円周率
pi
は円周率を表す定数で、ここでは3.14159に設定しています。定数は一度設定すると変更できません。
変数の宣言
var radius float64
radius
は、ユーザーが入力する円の半径を保持する変数です。float64
は浮動小数点数を表すデータ型です。
ユーザー入力の処理
fmt.Print("円の半径を入力してください: ") fmt.Scan(&radius)
fmt.Print
はメッセージを表示し、fmt.Scan
はユーザーからの入力を受け取ります。入力された値はradius
に格納されます。
面積の計算
area := pi * radius * radius
ここでは、円の面積を計算し、その結果をarea
に格納します。計算式は「円周率 × 半径 × 半径」です。
結果の表示
fmt.Printf("半径 %.2f の円の面積は %.2f です。\n", radius, area)
fmt.Printf
は、指定した形式で結果を表示します。%.2f
は、小数点以下2桁までの数値を表示するフォーマットです。
完了メッセージの表示
var message string = "計算が完了しました。" fmt.Println(message)
最後に、計算が完了したことを示すメッセージを表示します。fmt.Println
は、文字列を改行付きで出力します。
<<前の問題 |
問題集Top |
次の問題>> |
この問題への質問・コメント
この問題を作成するにあたりAIを活用しています。
問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。