0Pricing
Go Academy · レッスン

関数の基本とシグネチャ

パラメーター、戻り値の型、呼び出し規約

「関数の基本とシグネチャ」はCoddyKit上の無料Go Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはGo Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Go Academyコースには全4レッスンが含まれています。

関数の定義

Goでは、funcキーワードを使って関数を定義します。

func greet(name string) string {
    return "Hello, " + name
}

パラメーターと引数

パラメーターには型を指定し、name typeの組み合わせで列挙します。同じ型の複数のパラメーターでは、型の指定を共有できます。

func add(x, y int) int {
    return x + y
}

func rect(w, h float64) float64 {
    return w * h
}

戻り値のない関数

値を返さない関数では、戻り値の型を省略します。実行が末尾に到達すると、暗黙的に戻ります。

func printBanner(title string) {
    fmt.Println("=====", title, "======")
}

関数の呼び出し

関数名の後に括弧を付け、対応する引数を渡して関数を呼び出します。

result := add(3, 4)        // 7
fmt.Println(greet("Go"))   // Hello, Go
printBanner("Welcome")

第一級値としての関数

Goでは関数は第一級値です。変数に代入したり、引数として渡したりできます。

apply := func(n int, f func(int) int) int {
    return f(n)
}
double := func(n int) int { return n * 2 }
fmt.Println(apply(5, double)) // 10

関数型

名前付き関数型を定義すると、シグネチャをより明確にできます。

type Transform func(int) int

func applyAll(n int, fns []Transform) int {
    for _, f := range fns {
        n = f(n)
    }
    return n
}

再帰関数

Goは再帰をサポートしています。スタックの深さには注意してください。Goのゴルーチンスタックは動的に拡張されますが、無制限の再帰はスタックオーバーフローを引き起こします。

func factorial(n int) int {
    if n <= 1 {
        return 1
    }
    return n * factorial(n-1)
}

関数の命名規則

Goにおける関数の命名規則は次のとおりです。

  • MixedCaps(エクスポート対象)またはmixedCaps(非エクスポート対象)を使用します
  • 短く、動作を表す名前にします:New、Get、Parse、Write
  • 単純なゲッターにはGetXを使わず、Xだけにします
  • ブール値を返す述語にはIsValidやHasPrefixを使います

init()関数

特別なinit()関数は、パッケージが読み込まれたときにmain()より前に自動的に実行されます。

  • 引数を受け取らず、何も返しません
  • 1つのパッケージに複数のinit()関数を定義できます
  • ドライバーの登録など、一度だけ行う初期設定に使用します

関数とメソッド

関数はどの型にも関連付けられていません。メソッドにはレシーバーがあります(「構造体とメソッド」で扱います)。どちらもfuncキーワードを使用します。

// Function
func max(a, b int) int { ... }

// Method
func (c Counter) Value() int { ... }

クイックチェック

Goでは、関数から複数の値を返せますか?

まとめ:関数の基本

Goの関数は表現力が高く柔軟です。

  • func name(params) returnType { }
  • 同じ型のパラメーターでは、型の指定を共有できます
  • 関数は第一級値です
  • 再利用可能なシグネチャには関数型を定義します
  • 再帰をサポートしており、init()はパッケージの読み込み時に実行されます

次は、複数の戻り値について詳しく学びます。

よくある質問

「関数の基本とシグネチャ」レッスンは無料ですか?

はい。「関数の基本とシグネチャ」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Go Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Go Academyコースには全4レッスンが含まれています。

「関数の基本とシグネチャ」で何を学びますか?

パラメーター、戻り値の型、呼び出し規約 ブラウザで直接実行するハンズオンコードでGo Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Go Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのGo Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「関数の基本とシグネチャ」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このGo Academyレッスンでコードを書いて実行できますか?

はい。すべてのGo Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 関数の基本とシグネチャ
  2. 複数の戻り値
  3. 可変長引数関数
  4. defer、無名関数、クロージャ
← Go Academyに戻る