Golang
Packages, Valiables and Functions
Packages
- Go のプログラムはパッケージで成り立っている
main
パッケージのmain
関数からプログラムが始まる- パッケージ名はインポートパスの最後の要素と同じ名前である(
math/rand
ならrand
) - 一つのフォルダには一つのパッケージしか含められない(例外は
フォルダ名_test
)。通常はフォ ルダ名をパッケージ名にする。
Imports
// bad
import "fmt"
import anotherName "math"
import _ "io" // 初期化処理だけ使いたい場合
// good (factored import)
import (
"fmt"
anotherName "math"
import _ "io"
)
Exported names
- 大文字で始まる名前がエクスポートされる
- パッケージをインポートしたとき、エクスポートされた名前のみ参照できる
Functions
- 各引数の後に型を記載する
()
の後に返値の型を記載する
func add(x int, y int) int {
return x + y
}
// 連続する引数が同じタイプなら省略できる
func add(x, y int) int {
return x + y
}
Multiple results
ファンクションは複数の値を返すことができる。
func swap(x, y string) (string, string) {
return y, x
}
func main() {
a, b := swap("hello", "world")
fmt.Println(a, b) // => world hello
}
Named return values
- 戻り値に名前をつけると、関数の最初で定義した変数として扱われる
- 名前付き戻り値を使い、かつ return に何も書かなかった場合、自動的に名前付き戻り値がリターンされる(naked return)。ただし、長い関数では読みやすさの点から明示的に記載すること。
- 戻り値の意味を表す名前をつけるよう心がけること
func split(sum int) (x, y int) {
x = sum / 2
y = sum - x
return
}
func main() {
a, b := split(20)
fmt.Println(a, b)
}