Golang#

1. Golang(Go)とは?#

これらの記事がある。

まとめると、

  • シンプルなスクリプト言語

  • 曖昧な記述はできない

  • 機能を増やすことで言語を拡張していくことはない

  • 並行プログラミング: 関数fを別のゴールーチンで呼び出すと、goキーワードを付けてgo f()でいける

  • 豊富な標準ライブラリ群

  • …(省略)…

2.公式ドキュメントを読んで学ぶ#

3. Goをダウンロード#

※ Go1の間は言語の後方互換が保たれる。言い換えると、Go1.0で書いたコードはGo1.13でもビルドできる。

4. Go環境を構築#

  • インストールしてからバージョン確認してみる。
    $ go version

5. ソースコードファイルの構成#

   package main
   
   func main() {
      // 行コメント
      println("Hello, world.")
      /*
      ブロックコメント
      */
   }

6. プログラムの構成要素#

  • パッケージ

  • 関数

  • 変数

  • 定数

7. パッケージの使い方#

package main

import "fmt" // fmtパッケージのインポート

func main() {
   fmt.Println("hello, world.") // fmtパッケージのPrintln関数を呼び出す
}

8. コマンドラインからGoを実行#

  • プログラムが実行されるまでの流れは下記のようなイメージ Goのコード(コーディング) ↓ コンパイル可能なファイルを生成(go build) ↓ コンパイルおよび実行(go run)

  • コンパイルと実行のイメージ

    • go build コマンド
      コンパイルして実行可能なファイル(バイナリ)を生成
      $ go build main.go
      $ go build .
      $ go build pkgname

    • go run コマンド コンパイルから実行まで行う
      $ go run main.go
      $ go run .
      $ go run pkgname

9. 開発ツール: コードの書式を揃える#

  • gofmt

    • 標準のフォーマッタ

    • 絶対に使う

    • -s オプションで冗長な書き方をシンプルにできる

  • goimports

    • import文を追加/削除してくれる

    • 未使用パッケージのimportはエラーなので必須

    • フォーマットもかける

10. 開発ツール: コードの品質を保つ#

  • 静的解析ツール

    • golint: Goらしくないコードを検出

    • go test: コンパイラでは発見できないバグを検出(Go1.10以降)

11. バージョン管理ツールgoenv(Git)を導入#

※必須ではないからスキップしてよい

Homebrewでもインストールが可能ですが、brewの場合はバージョンが少し古いです(2020/5/4時点で1.23)。 最新バージョンのGoを使いたい場合は下記コマンドで最新のgoenvを指定する必要があります。
$ brew install –HEAD goenv

引用: Goのバージョン管理ツールに関する調査

12. Go Playground#

Go環境を構築せず、Go Playgroudを活かして自分で作成した簡単なコードを実行するのもあり

13. その他#