Go言語の基本、関数をマスターしよう!
これまでのステップで、Goの基本的な文法やデータ型を学んできましたね。いよいよプログラムをより構造化し、再利用可能な部品を作るための重要な要素、「関数」について学びます!関数を使いこなせると、複雑な処理もスッキリと書けるようになりますよ ✨
このセクションでは、Go言語における関数の基本的な定義方法、引数の渡し方、そして処理結果を返すための戻り値について解説します。
関数の基本的な定義方法
Go言語で関数を定義するには、func
キーワードを使います。基本的な形は次のようになります。
func 関数名(引数リスト) 戻り値の型リスト {
// 関数の処理内容
return 戻り値 // 戻り値がある場合
}
まずは、引数も戻り値もない、最もシンプルな関数を見てみましょう。
package main
import "fmt"
// "Hello, Function!" と表示する関数
func sayHello() {
fmt.Println("Hello, Function! 👋")
}
func main() {
// sayHello関数を呼び出す
sayHello()
}
この例では、sayHello
という名前の関数を定義しています。この関数は引数を受け取らず (()
の中が空)、何も返しません (戻り値の型リストが省略されている)。main
関数の中で sayHello()
と書くことで、定義した関数を呼び出すことができます。
引数(パラメータ)で関数に情報を渡す
関数に外部から値(情報)を渡して、その値を使って処理を行わせたい場合があります。そのために使うのが「引数(ひきすう)」です。パラメータとも呼ばれます。
引数は 関数名(引数名 型)
のように、引数名と型をセットで記述します。複数ある場合はカンマ ,
で区切ります。
package main
import "fmt"
// 名前を受け取って挨拶する関数
func greet(name string) {
fmt.Printf("こんにちは、%sさん!\n", name)
}
// 2つの整数を受け取って合計を表示する関数
func printSum(a int, b int) {
fmt.Printf("%d + %d = %d\n", a, b, a+b)
}
// 同じ型の引数が続く場合は、最後の引数にだけ型を書けばOK
func printProduct(x, y int) {
fmt.Printf("%d * %d = %d\n", x, y, x*y)
}
func main() {
greet("Go太郎") // 文字列 "Go太郎" を引数として渡す
printSum(5, 3) // 整数 5 と 3 を引数として渡す
printProduct(4, 6) // 整数 4 と 6 を引数として渡す
}
greet
関数は string
型の引数 name
を1つ受け取ります。printSum
関数は int
型の引数 a
と b
を2つ受け取ります。printProduct
のように、連続する引数が同じ型の場合は、最後の引数にだけ型を指定する省略形も使えます。
可変長引数
関数の引数の個数が決まっていない場合、「可変長引数」を使うと便利です。引数名の前に ...
をつけます。関数内ではスライスとして扱われます。
package main
import "fmt"
// 任意の数の整数を受け取って合計を計算し表示する関数
func sumAll(numbers ...int) {
total := 0
// numbers は []int 型のスライスとして扱われる
for _, num := range numbers {
total += num
}
fmt.Printf("合計: %d\n", total)
}
func main() {
sumAll(1, 2, 3) // 引数3つ
sumAll(10, 20, 30, 40) // 引数4つ
sumAll() // 引数0個でもOK
}
戻り値で関数の結果を受け取る
関数で計算した結果や処理結果を、呼び出し元で利用したい場合があります。そのために使うのが「戻り値(もどりち)」です。返り値(かえりち)とも呼ばれます。
戻り値がある場合は、引数リスト ()
の後に戻り値の型を記述します。関数の中では return
文を使って値を返します。
package main
import "fmt"
// 2つの整数を受け取って、その合計値を返す関数
func add(a int, b int) int { // 戻り値の型として int を指定
result := a + b
return result // 計算結果を返す
}
// 文字列を受け取って、メッセージを組み立てて返す関数
func createMessage(name string) string { // 戻り値の型として string を指定
return "メッセージ: こんにちは、" + name + "さん!"
}
func main() {
// add関数の戻り値を変数 sumResult に代入
sumResult := add(10, 25)
fmt.Println(sumResult) // 35 が表示される
// createMessage関数の戻り値を変数 msg に代入
msg := createMessage("Go次郎")
fmt.Println(msg) // "メッセージ: こんにちは、Go次郎さん!" が表示される
// 関数の戻り値を直接別の関数の引数に使うこともできる
fmt.Println(add(100, 50)) // 150 が表示される
}
add
関数は int
型の値を1つ返します。createMessage
関数は string
型の値を1つ返します。return
文が実行されると、関数の処理はその時点で終了し、指定された値が呼び出し元に返されます。
まとめ
今回は、Go言語の関数の基本となる以下の点を学びました。
func
キーワードを使った基本的な関数の定義方法- 関数に値を渡すための「引数」の使い方(型指定、可変長引数)
- 関数の処理結果を受け取るための「戻り値」の使い方(型指定、
return
文)
関数は、プログラムを部品化し、コードの見通しを良くしたり、同じ処理を何度も書かずに済ませたりするための非常に重要な機能です。しっかりマスターして、効率的なGoプログラミングを目指しましょう!💪
次のステップでは、Goの特徴的な機能である「複数戻り値」と、プログラムのエラーを扱うための「エラーハンドリング」について学びます。お楽しみに!
コメント