Skip to content

Golang

1. Golang(Go)とは?

これらの記事がある。

まとめると、

  • シンプルなスクリプト言語
  • 曖昧な記述はできない
  • 機能を増やすことで言語を拡張していくことはない
  • 並行プログラミング: 関数fを別のゴールーチンで呼び出すと、goキーワードを付けてgo f()でいける
  • 豊富な標準ライブラリ群
  • ...(省略)...

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

※公式入門教材はA Tour of Go

3. Goをダウンロード

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

4. Go環境を構築

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

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

   package main

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

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

  • パッケージ
  • 型
  • 関数
  • 変数
  • 定数

7. パッケージの使い方

```go 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. その他