🗃️

GO言語における関数について

2023/05/31に公開

はじめに

こんにちは!新卒でエンジニアをしています。
GO言語を学習していく中で基礎である「関数」についてまとめていきます。
私自身の理解を深めるとともに、備忘録として残させていただきます。

関数の書き方

GO言語で関数を書く際は基本的には次の形で記載します。

// 関数
package main

// 自作する関数はmain関数の外に書く
func 関数名(引数 型) 戻り値の型 {
    // 処理する内容を記述
}

func main() {
    // main関数内で実行
    関数名()
}

より具体的なコードを書いてみます。

package main

import "fmt"

func test() {
	fmt.Println("テストです。")
}
func main() {
	test()
}

この場合testという関数を宣言しています。
この場合は引数などは使用しておらず最もシンプルな形となっています。
「テストです。」という文字列を出力するというものであり結果は下記になります。

出力結果
テストです。

引数はあるが戻り値がないパターン

引数あり・戻り値なしのパターンを足し算を行う関数を例にして実行していきます。

package main

import "fmt"

func test(x int, y int) {
	fmt.Println(x + y)
}
func main() {
	test(3, 7)
}
出力結果
10

こちらの例ではtest(3, 7)で引数xに3を、引数yに7を与えており、test関数で足し算した結果10が出力される形となっています。

ちなみに下記のように型を省略して記載することも可能です。

package main

import "fmt"

func test(x , y int) {//省略した場合
	fmt.Println(x + y)
}
func main() {
	test(3, 7)
}

引数があり戻り値もある形

最も一般的な引数もあり、戻り値もある形を同様の例で確認してみます。

package main

import "fmt"

func test(x, y int) int {
	return x + y
}
func main() {
	i := test(6, 8)
	fmt.Println(i)
}
14

戻り値が複数あるパターン

計算結果を関数内で複数処理したい場合、戻り値も複数になります。その場合のコードを確認していきます。

package main

import "fmt"

func test(x, y int) (int, int) {
	d := x / y
	r := x % y
	return d, r
}
func main() {
	// 戻り値が2つなので変数も2つ
	div, rem := test(11, 3)
	fmt.Println("割り算の結果%d\n", div)
	fmt.Println("あまり%d\n", rem)
}
割り算の結果 3
あまり 2

int関数について

GO言語を学習しているとint関数という特殊な関数がありました。
int関数とは通常ではmain関数から始まる処理を、int関数はmain関数よりも先に実行していきます。変数を確実に初期化した状態でmain関数を実行したい時に使用します。
具体的な例を実践していきます。

package main

import "fmt"

func init() {
    fmt.Println("こちらの関数は、main関数より先に実行されます。")
}

func plus(x, y int) int {
    return x + y
}

func main() {
    i := plus(1, 2)
    fmt.Println(i)
}
こちらの関数は、main関数より先に実行されます。
3

このようにinit関数内にある文字列が先に出力されています。

まとめ

今回はGO言語を学習していくうえで最も基礎的な部分である関数について簡単にまとめました。
今後も基礎的な部分も含め備忘録としてまとめていきます。

株式会社アクティブコア

Discussion