メインコンテンツにスキップ
モジュール 3 · レッスン 1 / 5コース内の 11/50~10 min
モジュールのレッスン (1/5)

署名とパラメータ

Go では、関数は func で宣言されます。署名の構文が異なります C/Java の場合: 型はパラメーター名の後に続きます。 スペース。これは読み上げやすくするための選択です。代わりに「int 型の n」を使用します。 「int n」の。

基本的な構文

Go
func sum(a int, b int) int {
    return a + b
}

func greet(name string) {
    fmt.Println("ciao", name)
}

戻り値のない関数は、単に戻り値の型を省略します。

同じ型の連続したパラメータ

複数の連続するパラメータが同じ型を共有する場合、次のように宣言できます。 最後に一度だけです。これは慣用的なもので、どこでも見られます。

Go
func sum(a, b int) int { return a + b }
func max3(a, b, c float64) float64 { /* ... */ }
func parse(s, sep string, limit int) []string { /* ... */ }

エクスポートされた関数とエクスポートされていない関数

Go では、可視性は名前によって決まります: で始まる識別子 大文字の付いたものは エクスポート (他のパッケージから表示可能)、 他のものはパッケージに対してプライベートです。

Go
func Sum(a, b int) int { ... }    // esportata
func helper() { ... }              // privata al package

値としての機能

関数は 第一級の値 です。関数を代入したり、渡したり、 それらを返してください。クロージャに関するレッスンをさらに深く掘り下げていきます。

Go
op := sum            // op ha tipo func(int, int) int
fmt.Println(op(2, 3)) // 5

main および init: 2 つの特別な名前

  • func main() は、main パッケージのエントリ ポイントです。議論はありません。 戻り値はありません。
  • func init() はパッケージの起動時に自動的に呼び出されます (複数の場合でも) 複数のファイルが 1 つを定義している場合は何度も)。セットアップに役立ちます。控えめに使用してください。

試してみてください

運動#go.m3.l1.e1
試行回数: 0読み込み中…

a+b を返す関数 sum(a, b int) int を定義し、main で (3, 4) を使用して呼び出します。

エディターを読み込み中…
ヒントを表示

共有型: `(a, b int)`。戻り値の型は括弧の後に入ります。

3 回の試行後に解決策が利用可能になります

運動#go.m3.l1.e2
試行回数: 0読み込み中…

「ciao <name>」を出力するgreet(name string) (戻り値なし)を定義します。

エディターを読み込み中…
ヒントを表示

関数が何も返さない場合、戻り値の型はありません。

3 回の試行後に解決策が利用可能になります

Quiz#go.m3.l1.e3
準備完了

Go ではパラメーターの型はどこに置かれますか?

Go
func f(? ?) {}
回答の選択肢

要約

  • func name(param type, ...) returnType { ... }。
  • 名前の後に入力します。同じ型の連続したパラメータ → 宣言は一度だけです。
  • 大文字の頭文字 = エクスポート済み。 小文字 = パッケージに対してプライベート。
  • 関数は第一級です (割り当て可能、渡せる)。
  • main および init は、特別なセマンティクスを持つ予約名です。