Go言語の初心者向け問題1-☆1:レベル1の文法を総復習しよう
この問題を解くために必要な知識:
コメントの書き方、変数と定数、基本データ型、型のエイリアス、文字列操作、ポインタの基本、nilの概念、ビルトイン関数、算術演算子とビット演算子、標準入力と出力、import文の使用
<<前の問題 | 問題集Top |
次の問題>> |
Go練習問題1-☆1:レベル1の文法を総復習しよう
レベル1で学習した全ての文法について、身についているか確認しましょう。
この問題の要件
以下のコードをコピーし、コメントに従って完成させましょう。
package main import ( "fmt" ) // メイン関数:プログラムのエントリーポイント func main() { // コメントの書き方例:ここはコメントです /*【穴埋め問題1】変数と定数の宣言 ここに整数型の変数aを宣言し、10を代入してください。 ここに浮動小数点型の定数piを宣言し、3.14を代入してください。 */ // 基本データ型の例:整数、浮動小数点、文字列 /*【穴埋め問題2】基本データ型の例:整数、浮動小数点、文字列 ここに浮動小数点型の変数bを宣言し、5.5を代入してください。 ここに文字列型の変数cを宣言し、「こんにちは」を代入してください。 ここにaを出力するコードを書いてください。 ここにbを出力するコードを書いてください。 ここにcを出力するコードを書いてください。 */ // 型のエイリアス /*【穴埋め問題3】型のエイリアス ここにMyIntという型エイリアスを宣言し、整数型の変数dに100を代入してください。 ここにdを出力するコードを書いてください。 */ // 文字列操作:文字列の結合 /*【穴埋め問題4】文字列操作 ここにcに「、世界!」を結合し、greetingという変数に代入してください。 ここにgreetingを出力するコードを書いてください。 */ // ポインタの基本:変数のアドレスを指すポインタ /*【穴埋め問題5】ポインタの基本 ここに変数aのアドレスを指すポインタpを宣言し、*pを使ってその値を出力してください。 */ // nilの概念 /*【穴埋め問題6】nilの概念 ここにnilを持つポインタptrを宣言してください。 */ if ptr == nil { fmt.Println("ポインタはnilです") // nilである場合のメッセージ } // ビルトイン関数の使用例 /*【穴埋め問題7】ビルトイン関数の使用例 ここにaの型を表示するためにfmt.Sprintfを使用して出力するコードを書いてください。 */ // 算術演算子とビット演算子 /*【穴埋め問題8】算術演算子とビット演算子 ここにaに5を加算して変数eに代入し、eを出力するコードを書いてください。 さらにeとaのビット演算を行い、fに代入して出力するコードを書いてください。 */ // 標準入力と出力 /*【穴埋め問題9】標準入力と出力 ここにユーザーから名前を入力して、それを出力するコードを書いてください。 */ }
*****↓↓正解コードの実行結果の例↓↓*****
整数: 10 浮動小数点: 5.5 文字列: こんにちは 型エイリアスMyIntの値: 100 文字列操作: こんにちは、世界! ポインタpが指す値: 10 ポインタはnilです 変数aの型: int 算術演算の結果: 15 ビット演算の結果: 10 あなたの名前を入力してください: (ユーザー入力) 太郎 こんにちは、 太郎 さん!
解答例と解説
この問題の一つの正解例とそのコードの解説を以下に示します。
正解コードの例
例えば以下のようなプログラムが考えられます。
package main import ( "fmt" ) // メイン関数:プログラムのエントリーポイント func main() { // コメントの書き方例:ここはコメントです // 変数と定数の宣言 var a int = 10 // 整数型の変数を宣言して初期化 const pi float64 = 3.14 // 定数の宣言 // 基本データ型の例:整数、浮動小数点、文字列 var b float64 = 5.5 var c string = "こんにちは" fmt.Println("整数:", a) // 整数を出力 fmt.Println("浮動小数点:", b) // 浮動小数点を出力 fmt.Println("文字列:", c) // 文字列を出力 // 型のエイリアス type MyInt int var d MyInt = 100 fmt.Println("型エイリアスMyIntの値:", d) // エイリアス型の値を出力 // 文字列操作:文字列の結合 var greeting string = c + "、世界!" fmt.Println("文字列操作:", greeting) // 文字列を結合して出力 // ポインタの基本:変数のアドレスを指すポインタ var p *int = &a fmt.Println("ポインタpが指す値:", *p) // ポインタを使って変数の値を出力 // nilの概念 var ptr *int = nil if ptr == nil { fmt.Println("ポインタはnilです") // nilである場合のメッセージ } // ビルトイン関数の使用例 fmt.Println("変数aの型:", fmt.Sprintf("%T", a)) // 型を表示 // 算術演算子とビット演算子 var e int = a + 5 var f int = e & a fmt.Println("算術演算の結果:", e) // 算術演算の結果を出力 fmt.Println("ビット演算の結果:", f) // ビット演算の結果を出力 // 標準入力と出力 fmt.Println("あなたの名前を入力してください:") var name string fmt.Scanln(&name) // 標準入力でユーザの名前を取得 fmt.Println("こんにちは、", name, "さん!") // 標準出力で挨拶 }
正解コードの解説
メイン関数 (main
)
func main() { // プログラムのメイン処理 }
main
関数はGoプログラムのエントリーポイントです。つまり、この関数がプログラムの実行を開始する場所です。すべてのGoプログラムには、必ず1つのmain
関数があります。
変数と定数の宣言
var a int = 10 // 整数型の変数 const pi float64 = 3.14 // 定数
var
を使ってa
という名前の変数を宣言し、初期値として10を代入しています。この場合、a
はint
(整数型)です。変数はプログラム中で値を変更できます。- 一方、
const
は定数を表します。定数は一度定義すると値を変更できません。ここでは、pi
という定数をfloat64
(64ビットの浮動小数点型)で宣言し、円周率3.14を代入しています。
基本データ型の例
var b float64 = 5.5 var c string = "こんにちは" fmt.Println("整数:", a) fmt.Println("浮動小数点:", b) fmt.Println("文字列:", c)
b
は浮動小数点数型(float64
)の変数で、5.5
という値が代入されています。c
は文字列型(string
)で、「こんにちは」というテキストが格納されています。fmt.Println
は、指定した内容を標準出力(コンソール)に表示するための関数です。このコードでは、整数、浮動小数点数、文字列がそれぞれ出力されます。
型エイリアス
type MyInt int var d MyInt = 100 fmt.Println("型エイリアスMyIntの値:", d)
type
を使って、新しい型エイリアス(別名)を定義しています。MyInt
はint
型のエイリアスです。
これは、データ型に特定の名前をつけて使いやすくしたい場合に便利です。このプログラムでは、MyInt
という名前をつけた新しい型を使って、d
という変数を宣言しています。
文字列の結合
var greeting string = c + "、世界!" fmt.Println("文字列操作:", greeting)
この部分では、文字列の結合を行っています。c
に格納された「こんにちは」と「、世界!」を連結して、greeting
という変数に新しい文字列を代入しています。
結合後の文字列は「こんにちは、世界!」です。
ポインタの基本
var p *int = &a fmt.Println("ポインタpが指す値:", *p)
ポインタは、変数のメモリアドレスを格納する変数です。&a
は変数a
のアドレスを取得します。
p
はそのアドレスを指すポインタで、*p
を使ってa
の値(ここでは10)を参照しています。
nilポインタ
var ptr *int = nil if ptr == nil { fmt.Println("ポインタはnilです") }
nil
は、ポインタが何も指していない状態を表します。ここでは、ptr
というポインタがnil
であるかどうかを確認し、nil
であれば「ポインタはnilです」と出力します。
ビルトイン関数
fmt.Println("変数aの型:", fmt.Sprintf("%T", a))
%T
はSprintf
関数を使って変数の型を取得し、文字列として出力します。ここでは、変数a
の型であるint
が表示されます。
算術演算子とビット演算子
var e int = a + 5 var f int = e & a fmt.Println("算術演算の結果:", e) fmt.Println("ビット演算の結果:", f)
a + 5
は算術演算です。a
の値に5を加算し、その結果をe
に代入しています。&
はビット演算子で、AND演算を行います。e
とa
のビットごとのAND演算結果がf
に格納されます。
標準入力
fmt.Println("あなたの名前を入力してください:") var name string fmt.Scanln(&name) fmt.Println("こんにちは、", name, "さん!")
この部分では、標準入力からユーザーの名前を取得します。fmt.Scanln
を使って、コンソールに入力された文字列を変数name
に格納します。
取得した名前を使って挨拶を出力します。
<<前の問題 |
問題集Top |
次の問題>> |
この問題への質問・コメント
この問題を作成するにあたりAIを活用しています。
問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。