ガクセイハッカソン

Go言語マスター 〜関数や変数の基本〜

2022-08-21 公開

はじめに

Goの関数や変数について解説します。

imports

前回の解説で使用したimportではimportを複数行書きました。

import "fmt"
import "math"

これは次のように複数をまとめてimportできます。

import (
    "fmt"
    "math"
)

Exported names

全体のソースコードは次の様で実際に実行してみましょう。

package main

import (
  "fmt"
  "math"
)

func main() {
  fmt.Println(math.pi)
}

実際に実行してみるとエラーになります。「undefined: math.pi」と表示されます。
Goでは外部に公開したい関数や変数の名前は大文字から始めることで、他のパッケージから呼び出すことができるようになっています。
今回は、piが大文字でないためエラー発生しました。次のように修正すると実行できます。

package main

import (
  "fmt"
  "math"
)

func main() {
  fmt.Println(math.Pi)
}

ちなみに同じパッケージ上であれば小文字から始まる関数や変数にもアクセスできます。実際にコードを書いて確認してみます。

hoge.goというファイルを作成します。hoge.goファイル内に次のように記述します。

package main

const hoge = "hogehoge"

main.goファイル内に次の様に記述します。

package main

import  "fmt"

func main() {
  fmt.Println(hoge)
}

main.goファイルを実行してみます。実行をすると「hogehoge」と表示されます。

Functions

関数の記述方法についてです。

package main

import "fmt"

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

func main() {
  fmt.Println(add(42, 13))
}

このadd関数はint型の2つの引数を取ります。また関数名の後に戻り値の型を記述します。

Muliple results

関数で2つ以上の戻り値を返す方法です。

package main

import "fmt"

func swap(x, y string) (string, string) {
  return y, x
}

func main() {
  a, b := swap("hello", "world")
  fmt.Println(a, b)
}

関数名の後ろに戻り値の数と同じ数の型を記述することで、複数の戻り値を返すことができます。

Named return values

戻り値の変数に名前をつける方法についてです。

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))
}

split関数のように関数名の後に変数を書き込むことによって、関数内で宣言することなく変数を記述できます。
返り値の変数と型が最初に指定されているため、returnのみで終了できます。

ただし記述方法は長い関数の中で使用してしまうとコードの可読性が損なわれるため、短い関数の中でのみ使用すると良いでしょう。

まとめ

今回は、変数と関数の基礎文法などを学習しました。次回は、for文について説明をします。

関連記事