[Golang] 関数

2021-10-04 hit count image

Golangで関数を定義して使う方法について説明します。

概要

今回のブログポストではGolangで関数を定義して使う方法について説明します。このブログポストで紹介するコードは次のリンクで確認できます。

関数の定義

Golangで関数を定義して使う方法について確認してみましょう。関数を定義して使う方法を確認するため、main.goファイルを生成して次のように修正します。

package main

import "fmt"

func Add(a int, b int) int {
    return a + b
}

func main() {
    c := Add(1, 2)
    fmt.Println(c)
}

関数は次のように関数定義キーワードであるfuncを使って定義します。

// func 関数名(パラメータ...) リターンタイプ {
//     コードブログ
// }
func Add(a int, b int) int {
    return a + b
}

もし、パラメータが同じタイプが連続してる時は、次のようにタイプを省略することができます。

func Add(a, b int) int {
    return a + b
}

PublicとPrivate

GolangではPublicPrivateと言うキーワードは存在しないが、大文字と小文字でPublic関数とPirvate関数を判別します。

  • 関数名が大文字で始まる: Public関数
  • 関数名が小文字で始まる: Private関数

Public関数は他のパッケージで当該関数を使うことができますが、Private関数は当該パッケージ内のみで使うことができます。

マルチリターン関数

Golangでは次のように関数が複数の値をリターンすることができます。

func Divide(a, b int) (int, bool) {
    if b == 0 {
        return 0, false
    }

    return a / b, true
}

func main() {
    c, success := Divide(10, 2)
    fmt.Println(c, success)
    d, success := Divide(10, 0)
    fmt.Println(d, success)
}

Golangdeha次のように:=(Short variable declarations)を使って変数を宣言する時、すでに変数名が使えていると、コンパイルエラーが発生します。

func main() {
    c, success := Divide(10, 2)
    c, success := Divide(10, 0) // ERROR!
    fmt.Println(c, success)
}

:=は変数を新く宣言して割り当てることを意味しますので、重複された名前では新しい変数を生成することができないのでです。しかし、マルチリターン関数でリターンされる値を保存する変数名は1つ違うとコンパイルエラーが発生しません。

func main() {
    c, success := Divide(10, 2)
    fmt.Println(c, success)
    d, success := Divide(10, 0)
    fmt.Println(d, success)
}

出力値に名前を指定

マルチリターン関数では、次のようにリターンされる値を保存する変数名を指定することができます。

func Divide(a, b int) (result int, success bool) {
    if b == 0 {
        result = 0
        success = false
        return
    }

    result = a / b
    success = true
    return
}

完了

これでGolangで関数を定義して使う方法についてみてみました。また、GolangでPublicPrivate関数を判別するため、関数名の最初文字を使うことが分かりました。

私のブログが役に立ちましたか?下にコメントを残してください。それは私にとって大きな大きな力になります!

Posts