Go言語(golang)のファンクションとは
Golangの関数(function)は、一連の処理をまとめて実行できる構造です。関数はプログラムの基本的なビルディングブロックであり、コードを整理し、再利用可能にするための重要な要素です。以下に、Golangの基本的な関数の書き方と使い方を示します。
Tour of Goを参考にしています。
Go言語(golang)のファンクション
関数の定義と呼び出し
package main
import "fmt"
// add 関数の定義
func add(x int, y int) int {
return x + y
}
func main() {
// 関数の呼び出しと結果の表示
result := add(3, 5)
fmt.Println("Result:", result)
}
結果
Result: 8
この例では、add
という名前の関数を定義しています。この関数は2つの整数を受け取り、それらを足して結果を返します。main
関数内で add
関数を呼び出しています。
複数の戻り値を持つ関数(Multiple results)
package main
import "fmt"
// divide 関数の定義(戻り値が2つ)
func divide(x, y float64) (float64, error) {
if y == 0 {
return 0, fmt.Errorf("division by zero is not allowed")
}
result := x / y
return result, nil
}
func main() {
// 関数の呼び出しと結果の表示
result, err := divide(10, 2)
if err != nil {
fmt.Println("Error:", err)
} else {
fmt.Println("Result:", result)
}
}
結果
Result: 5
この例では、divide
という名前の関数を定義しています。この関数は2つの浮動小数点数を受け取り、1つ目の数を2つ目の数で割った結果と、エラー(ゼロでの割り算がある場合)を返します。
無名関数(クロージャ)
package main
import "fmt"
func main() {
// 無名関数の定義と呼び出し
add := func(x, y int) int {
return x + y
}
result := add(3, 5)
fmt.Println("Result:", result)
}
結果
Result: 8
この例では、無名関数(匿名関数)を定義しています。これは変数 add
に代入され、その後呼び出されています。無名関数は変数に代入することで、関数の動的な生成やクロージャの実装が可能です。
これらはGolangで関数を使う基本的な例です。関数はプログラムの中でコードを構造化し、再利用性を高めるための重要な要素です。
Functions continued
関数の2つ以上の引数が同じ型である場合には、最後の型を残して省略して記述できます。
この例では、x int, y int
をx, y int
へ省略できます。
package main
import "fmt"
func add(x, y int) int {
return x + y
}
func main() {
fmt.Println(add(42, 13))
}
結果
55
Named return values
Goでの戻り値となる変数に名前をつける( named return value )ことができます。戻り値に名前をつけると、関数の最初で定義した変数名として扱われます。
この戻り値の名前は、戻り値の意味を示す名前とすることで、関数のドキュメントとして表現するようにしましょう。
名前をつけた戻り値の変数を使うと、 return
ステートメントに何も書かずに戻すことができます。これを “naked” return と呼びます。
例のコードのように、naked returnステートメントは、短い関数でのみ利用すべきです。長い関数で使うと読みやすさ( readability )に悪影響があります。
package main
import "fmt"
func split(sum int) (x, y int) {
x = sum * 4 / 9
y = sum - x
return
}
func main() {
fmt.Println(split(17))
}
結果
7 10