Go練習問題1-☆1:レベル1の文法を総復習しよう

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

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を代入しています。この場合、aint(整数型)です。変数はプログラム中で値を変更できます。
  • 一方、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を使って、新しい型エイリアス(別名)を定義しています。MyIntint型のエイリアスです。

これは、データ型に特定の名前をつけて使いやすくしたい場合に便利です。このプログラムでは、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))

%TSprintf関数を使って変数の型を取得し、文字列として出力します。ここでは、変数aの型であるintが表示されます。

算術演算子とビット演算子

var e int = a + 5
var f int = e & a
fmt.Println("算術演算の結果:", e)
fmt.Println("ビット演算の結果:", f)
  • a + 5は算術演算です。aの値に5を加算し、その結果をeに代入しています。
  • &はビット演算子で、AND演算を行います。eaのビットごとのAND演算結果がfに格納されます。

標準入力

fmt.Println("あなたの名前を入力してください:")
var name string
fmt.Scanln(&name)
fmt.Println("こんにちは、", name, "さん!")

この部分では、標準入力からユーザーの名前を取得します。fmt.Scanlnを使って、コンソールに入力された文字列を変数nameに格納します。

取得した名前を使って挨拶を出力します。

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

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

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

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






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