Golang入門1(Goとは、Package、関数(func))

2019-08-15 2019-08-20

Go言語の構文など、学んだことをまとめておきます。
よく使っているわけではないので、間違った解釈があるかもしれませんがご了承ください。

基本的に、A Tour of Go で勉強しているので、内容はその流れに沿った順になっています。

Golangとは

Golangは、Googleが作った静的型付け言語で、C/C++の流れに沿って設計されています。
ガベージコレクションを備え、C++と異なり読み書きが簡単で、効率的な並列化の機構を持ちます。

特徴

  • バイナリ
    • 依存関係を含んだバイナリを生成します。これにより、インストールやデプロイが簡単になります。
  • シンプルな言語仕様
    • より簡単に、理解しやすくなるように設計されており、Do More with Less(少ないリソースでより多くのことを)をコンセプトにしています。
  • 強力な標準ライブラリ
    • たくさんのライブラリがPackages として提供されています。
  • パッケージ管理機能
    • 簡単なコマンドで外部に公開されたパッケージを使ったり、公開したりできるようです。
  • 静的型付け
  • ユニットテストをサポート

入門

パッケージ

全てのGoプログラムは、Packageとしてできており、プログラム実行時のエントリーポイントは、mainパッケージになっています。

package main

func main() {
}

import構文を使って、外部のパッケージをロードする事ができます。
import構文は、import "fmt"import "math"のように一行ずつ書く事もできます。

package main

import (
    "fmt"
    "math"
)

func main() {
    fmt.Printf("Now you have %g programs.\n", math.Sqrt(7))
}

パッケージ外部にエクスポートするには、変数や関数の名前の先頭の文字を大文字にする必要があります。
math.Piは外部パッケージから参照可能だが、math.piは参照できません。

関数

関数はfuncキーワードで定義します。

特徴としては、以下です。

  • フォーマットは、func <関数名>(<変数名> <変数の型>, ...) (<戻り値名> <戻り値の型>, ...) { }
  • 型は変数名の後に書く
  • 戻り値として複数の値を返す事ができる
  • 関数定義に戻り値の名前を指定できる
  • 戻り値の名前を指定する場合、returnの引数を省略できる
  • 型が同一の引数/戻り値については、型をまとめる事ができる
// 引数と戻り値の型をまとめないパターン
func calc(a int, b int) (c int, d int) {
    c = a + b
    d = a * b
    return
}

// 引数と戻り値の型をまとめたパターン
func calc(a, b int) (c, d int) {
    c = a + b
    d = a * b
    return
}

// 戻り値名を省略したパターン
func calc(a, b int) (int, int) {
    return a + b, a * b
}

戻り値に名前をつけられるのが印象的でした。

参考