概要 †
- 言語機能や文法などの要素を極限まで削ったコンパクトなプログラミング言語
- 改良されたC
- 厳密に定義された多数の基本型
- パッケージによる名前空間の導入
- ガベージコレクタによるメモリ管理
- コンパイル言語
- コンパイル速度が速い ... コードの修正→テスト実行のサイクルを快適に回すことに貢献
- マルチプラットフォームで動作
- OSへの非依存
- OSの標準的なライブラリに依存しない実行ファイルを生成
- OSが提供する共有ライブラリを使わない代わりに、自前で相当する機能をすべて保持する必要があるため、実行ファイルサイズは大きくなる
- ガーベジコレクタ機能を備える
- 並行処理に強い
- 簡潔性を目指して、以下の機能を外した
- オブジェクト指向
- 例外機構
- ジェネリクス ... v1.18 で導入
導入事例 †
学習 †
Goにないもの、どうする? †
クラス †
- クラスという概念は存在しない
- クラス・オブジェクトが全く使えない。というわけではなく、構造体・インターフェースに置き換えることが出来、疑似的にクラスのように利用することが可能になる
- Go言語は継承の使用を避け、 継承ではなくコンポジションを選択するという原則 に厳密に従っている
- Goは、これを達成するのに、構造体とインターフェース間の部分型(is-a)とオブジェクトコンポジション(has-a)の関係を利用している
例外処理 †
他言語からの乗り換え †
from PHP †
トレンド †
バージョン †
- Goは年に2回、2月と8月に新しいバージョンをリリースする
1.18 (2022/3) †
1.19 †
主な機能追加 †
go get †
モジュール †
コンテキスト †
ジェネリクス †
DDD †
ORM †
ライブラリ †
ロギング †
Excel †
PDF †
gopdf †
モバイル開発 †
Go mobile †
環境構築 †
オンライン †
Windows †
macOS †
goenv †
Chrome OS †
基本設定 †
GOPATHの設定 †
export GOPATH=$(go env GOPATH)
export PATH=$GOPATH/bin:$PATH
GoDoc? †
ツール †
gore, gocode, pp †
$ go get github.com/motemen/gore/cmd/gore
$ go get github.com/mdempsky/gocode
$ go get github.com/k0kubun/pp
ghq †
goimports †
$ go get golang.org/x/tools/cmd/goimports
golint †
$ go get golang.org/x/lint/golint
gox †
$ go get github.com/mitchellh/gox
クロスコンパイル †
常駐システム †
マイクロサービス †
開発会社 †