Go言語の関数の基本!定義の書き方と呼び出し方をやさしく解説
生徒
「Go言語では、どうやって関数を使うんですか?」
先生
「Go言語では、関数は『処理をまとめておく箱』のようなものです。使いたいときにその箱を呼び出すことで、同じ処理を何度も繰り返し使えるんですよ。」
生徒
「関数の作り方や呼び出し方って難しいですか?」
先生
「いいえ、とてもシンプルです。では、Go言語の関数の基本をわかりやすく解説していきましょう!」
1. Go言語の関数とは?
Go言語(Golang)における関数(function)とは、特定の処理をひとまとまりにして定義し、必要なときに呼び出せる仕組みです。たとえば、「あいさつを表示する」「足し算をする」といった処理を関数にしておくことで、何度でも使い回すことができます。
関数を使うことで、プログラムが整理され、わかりやすく、修正もしやすくなります。
2. 関数の定義の基本構文
Go言語で関数を定義するには、次のような構文を使います。
func 関数名() {
// 実行したい処理
}
funcは「これは関数ですよ」という宣言です。そのあとに関数名、そして丸括弧 () と中括弧 { } で処理内容を囲みます。
3. 最もシンプルな関数の例
まずは簡単なあいさつを表示する関数を作ってみましょう。
package main
import "fmt"
func greet() {
fmt.Println("こんにちは!Go言語へようこそ。")
}
func main() {
greet()
}
実行結果:
こんにちは!Go言語へようこそ。
このように、main関数の中からgreet関数を呼び出すことで、あいさつが表示されます。
4. 引数(ひきすう)付きの関数
関数に引数(ひきすう)を渡すことで、呼び出しごとに異なるデータを扱うことができます。
func sayHello(name string) {
fmt.Println("こんにちは、" + name + "さん!")
}
func main() {
sayHello("タロウ")
sayHello("ハナコ")
}
実行結果:
こんにちは、タロウさん!
こんにちは、ハナコさん!
name stringは、「nameという名前の文字列(string)を受け取ります」という意味です。
5. 戻り値のある関数
関数は、値を返す(戻す)こともできます。これを戻り値といいます。
func add(a int, b int) int {
return a + b
}
func main() {
result := add(3, 5)
fmt.Println("合計は", result)
}
実行結果:
合計は 8
returnは、「この値を返します」という意味です。intは整数型を表しています。
6. 複数の戻り値を返す関数
Go言語では、複数の戻り値を返すこともできます。たとえば、割り算の結果と余りを同時に返したい場合です。
func divide(x int, y int) (int, int) {
return x / y, x % y
}
func main() {
result, remainder := divide(10, 3)
fmt.Println("商は", result)
fmt.Println("余りは", remainder)
}
実行結果:
商は 3
余りは 1
このようにカンマ区切りで複数の値を返し、それぞれを変数に代入できます。
7. Go言語の関数を使うメリット
- コードの再利用:同じ処理を何度でも呼び出せる
- 読みやすさアップ:処理の内容が分かりやすくなる
- 修正しやすい:関数の中身だけを直せば、全体が修正される
関数は、プログラムを効率よく書くために欠かせない基本要素です。
まとめ
Go言語における関数の基本を学ぶことで、より効率的で読みやすいプログラムが書けるようになります。関数は「処理のかたまり」であり、再利用性や可読性、保守性を大きく向上させる力を持っています。funcキーワードによる定義、引数や戻り値の扱い、複数の戻り値の使い方など、実践的な例を通じて基本をしっかり身につけました。
特に、Go言語はシンプルで直感的な構文が魅力です。sayHelloのように引数を受け取って柔軟なメッセージを表示したり、addのように戻り値で結果を受け取って計算処理をしたり、divideで複数の戻り値を活用することで、現実の問題にも応用できる関数設計が可能です。
関数の基本をマスターすれば、今後のGo言語での開発の基盤となり、WebアプリケーションやAPI開発、CLIツール作成など、さまざまな場面で役立ちます。
関数の定義と呼び出しを復習しよう
package main
import "fmt"
func sayGoodbye(name string) {
fmt.Println("さようなら、" + name + "さん!")
}
func main() {
sayGoodbye("ケンジ")
}
このコードでは、sayGoodbyeという関数を定義し、"ケンジ"という名前を引数として渡しています。結果として、「さようなら、ケンジさん!」と表示されます。このように、引数を使った関数は非常に柔軟で、さまざまな用途に活用できます。
複数の戻り値の活用をおさらい
func calcStats(scores []int) (int, float64) {
sum := 0
for _, score := range scores {
sum += score
}
avg := float64(sum) / float64(len(scores))
return sum, avg
}
func main() {
total, average := calcStats([]int{80, 90, 75})
fmt.Println("合計点:", total)
fmt.Println("平均点:", average)
}
ここでは、スライスで渡された点数の合計と平均を同時に返す関数calcStatsを定義しました。Go言語では、こうした複数の戻り値が標準的にサポートされているため、処理の結果を分かりやすく返すことができます。
生徒
「先生、Go言語の関数って思っていたよりずっとシンプルなんですね!」
先生
「そうですね。funcで始めて、引数や戻り値をつけるだけで関数が作れるので、初心者にも扱いやすいですよ。」
生徒
「戻り値が2つある関数とか、現実の処理にもすごく応用できそうですね!」
先生
「その通りです。たとえばエラーと結果を一緒に返すなど、実務でも多用される書き方ですね。関数をしっかり使いこなせれば、Goでの開発がグッと楽になりますよ。」
生徒
「なるほど!もっと関数を使って、いろんなプログラムを書いてみたくなりました!」
先生
「それが一番大事です。どんどん試して、Go言語の楽しさを体験していきましょう!」