Go練習問題1-7:ビルトイン関数を理解しよう

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

Go言語の初心者向け問題1-7:ビルトイン関数を理解しよう

この問題を解くために必要な知識:
コメントの書き方、変数と定数基本データ型型のエイリアス文字列操作ポインタの基本nilの概念ビルトイン関数算術演算子ビット演算子、標準入力と出力、import文の使用

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




Go言語の文法「ビルトイン関数」とは

ここではビルトイン関数の意味や使い方を復習します。必要ない方はここをクリックして練習問題へ飛びましょう。

Go言語には、プログラムのさまざまな場面で便利に使える「ビルトイン関数」と呼ばれる関数がいくつか提供されています。

これらは言語自体に組み込まれており、追加のパッケージをインポートすることなく、すぐに使用することができます。

代表的なビルトイン関数の例

以下に、初心者にとって特に重要なビルトイン関数をいくつか紹介します。

  1. len()
    • 概要: 配列、スライス、マップ、チャンネルの長さや要素数を返します。
    • 使用例: n := len([]int{1, 2, 3}) // nは3になります
  2. append()
    • 概要: スライスに要素を追加します。元のスライスを変更するのではなく、新しいスライスを返します。
    • 使用例: s := append([]int{1, 2}, 3) // sは[1, 2, 3]になります
  3. copy()
    • 概要: 一つのスライスから別のスライスに要素をコピーします。コピーされた要素の数を返します。
    • 使用例: copy(s1, s2) (ここで、s1s2はスライス)

ビルトイン関数の特長

これらのビルトイン関数は、パフォーマンスを意識して最適化されており、Goの基本的なデータ構造やアルゴリズムを効率的に処理するのに役立ちます。

たとえば、len()関数はO(1)の時間で結果を返すように設計されており、大規模なデータセットを扱う際にも高速です。

まとめ

Go言語のビルトイン関数は、プログラムを効率的に書くための強力なツールです。

これらの関数を理解し、適切に使いこなすことで、コードの読みやすさと保守性が向上します。

初心者の方は、まずはこれらの基本的なビルトイン関数をしっかり理解し、さまざまなプログラムで活用してみてください。

Go練習問題1-6:ビルトイン関数の使い方を学ぼう

ビルトイン関数を使用したプログラムを作成しましょう。

この問題の要件

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

  • 整数型の変数 number110number220 で初期化する。
  • fmt.Println() を使って number1number2 の値を標準出力に表示する。
  • 文字列 message に「こんにちは、Go言語!」を代入し、 len() 関数でその文字列の長さを取得して表示する。
  • 整数型ポインタ変数 ptrnil で初期化し、その値を表示する。
  • number1number2 を足し合わせた結果を sum に代入し、表示する。

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

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

数値1: 10
数値2: 20
メッセージの長さ: 29
ポインタの初期値: <nil>
合計: 30

この問題を解くヒント

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

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

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

1.package main パッケージ宣言
2.import "fmt" パッケージのインポート
3.main 関数の定義
 3-1. 整数型の変数 number1number2 を宣言および初期化
 3-2. 標準出力に number1number2 の値を表示
 3-3. 文字列変数 message を宣言し、”こんにちは、Go言語!” を代入
  3-3-1. len() 関数を使って message の長さを取得し、標準出力に表示
 3-4. 整数型ポインタ変数 ptr を宣言し、nil で初期化
  3-4-1. ptr の値を標準出力に表示
 3-5. number1number2 を足し合わせた結果を sum に代入
  3-5-1. sum の値を標準出力に表示

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

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

package main

import "fmt"

func main() {
    // 変数の宣言と初期化
    var number1 int = 10
    var number2 int = 20

    // fmt.Println() を使って数値を出力
    /*【穴埋め問題1】
    ここに number1 と number2 を標準出力に表示するコードを書いてください。
    */

    // 文字列の長さを取得
    message := "こんにちは、Go言語!"
    /*【穴埋め問題2】
    ここに len() 関数を使って message の長さを取得し、標準出力に表示するコードを書いてください。
    */

    // nilを使ったポインタの初期化
    var ptr *int = nil
    /*【穴埋め問題3】
    ここに ptr の値を標準出力に表示するコードを書いてください。
    */

    // 算術演算子を使った加算
    sum := number1 + number2
    /*【穴埋め問題4】
    ここに sum の値を標準出力に表示するコードを書いてください。
    */
}

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

解答例

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

正解コードの例

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

package main

import "fmt"

func main() {
    // 変数の宣言と初期化
    var number1 int = 10
    var number2 int = 20

    // ビルトイン関数println()を使って標準出力に表示
    fmt.Println("数値1:", number1) // 数値1を出力
    fmt.Println("数値2:", number2) // 数値2を出力

    // ビルトイン関数len()を使った文字列の長さの取得
    message := "こんにちは、Go言語!"
    fmt.Println("メッセージの長さ:", len(message)) // 文字列の長さを出力

    // nilを使ったポインタの例
    var ptr *int = nil
    fmt.Println("ポインタの初期値:", ptr) // nilのポインタを出力

    // 算術演算子を使って数値を足し合わせる
    sum := number1 + number2
    fmt.Println("合計:", sum) // 合計を出力
}

正解コードの解説

このコードでは、Go言語の基本的な要素を使って、変数の宣言、標準出力、文字列操作、ポインタ、そして算術演算の例を紹介しています。以下にコードの各部分を解説します。

変数の宣言と初期化

var number1 int = 10
var number2 int = 20

ここでは、varキーワードを使って、number1number2という2つの整数型(int)変数を宣言し、それぞれ10と20の値で初期化しています。Goでは、変数の型を明示的に指定する必要がありますが、型推論も可能です。

標準出力への表示

fmt.Println("数値1:", number1)
fmt.Println("数値2:", number2)

この部分では、Goの標準ライブラリに含まれるfmtパッケージを使って、Println関数でコンソールに出力を行っています。

Printlnは、引数に与えた値を一行ずつ表示するビルトイン関数です。

ビルトイン関数lenを使った文字列の長さ取得

message := "こんにちは、Go言語!"
fmt.Println("メッセージの長さ:", len(message))

len関数は、文字列やスライスの長さを返すGoのビルトイン関数です。このコードでは、文字列messageの長さを取得して表示しています。

nilを使ったポインタの初期化

var ptr *int = nil
fmt.Println("ポインタの初期値:", ptr)

ここでは、ポインタptrを宣言し、初期値としてnilを設定しています。nilは、Goにおいて「何も指していない」ことを表す特別な値です。

算術演算子による計算

sum := number1 + number2
fmt.Println("合計:", sum)

最後に、number1number2を足し合わせた結果をsumという変数に格納し、その合計を出力しています。

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

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

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

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






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