Works by

Ren's blog

@rennnosuke_rk 技術ブログです

2020-02-01から1ヶ月間の記事一覧

【Golang】Go のSSA表現形式のダンプとその解析

SSA 形式とは 静的単一代入(static simple-assignment)形式と呼ばれ、コンパイラによって生成される中間表現のこと。 SSA は、各変数への代入が一度のみ行われる式によって構成される。 例えば、以下のような式を含むコードを見ると、一行目のコードが不要で…

【Golang】Go 1.14 の重複するメソッドを持つインターフェース埋め込みの許可

proposal/6977-overlapping-interfaces.md at master · golang/proposal Go 1.14 より、重複するメソッドを持ったインタフェースの複数埋め込みが可能になった。 インタフェースの埋め込みは、あるインタフェース A を別のインタフェース B 内で宣言すること…

【Golang】Go ModulesのGo依存パッケージ管理

Go 1.11 から導入された Go Modules Go 1.11 より、Go 依存パッケージの解決のための Go Modules の概念が導入された。簡単に言うと、Go 公式でサポートされた npm のようなパッケージバージョン管理ツール。 Go プロジェクト配下に見受けられる go.mod go.s…

【Golang】Go 1.13 モジュールミラーリングサーバーとチェックサム DB

Go 1.13 より、Go モジュール関連のサポートが強化された。主な機能は以下の2つ。 パッケージをより高速にインストール可能なミラーリングサーバの設定 モジュールの信頼性を向上するチェックサム機構 依存モジュールのミラーリング Go 1.13 では、モジュー…

【Golang】Go1.13 errors ライブラリによるerror値の取り扱い

error のラッピング Go 1.13 より、 fmt.Errorf が error インタフェースを実装する値のラッピングをサポートした。この機能により、ある error 値を別の error に内包する事ができる。 func UpdateHoge(hoge: Hoge) error { err := app.UpdateHoge(hoge) if…

【Golang】 関数引数 - 値渡しとポインタ渡しの指針

Golangでの値渡しとポインタ渡しの指針 Golang にはポインタの概念がある。なので、C/C++同様に関数引数型を値型・ポインタ型の2つが指定できる。 func print(s string) { fmt.Println(s) } func printPtr(s *string) { fmt.Println(*s) } 値型で引数を渡し…

【Golang】エスケープ処理とその解析

Golang の memory allocation Golang は C/C++などと異なり、いい感じに変数のメモリ領域を割り当ててくれる。例えば、以下のようなコードでも Golang は動作する。 type Hoge struct {} func NewHoge() *Hoge { h := Hoge{} return &h } NewHoge() 内で生成…