Golang

Go TestScript

August 7, 2022
Go, Golang, TestScript

Go TestScript # 概要 # TestScript は元々 Go のコンパイラをテストするために作成されたもの。 https://cs.opensource.google/go/go/+/release-branch.go1.19:src/cmd/go/script_test.go シェルスクリプトのように記述でき、ファイルシステム上で動作するものをテストできる。 定義済のコマンドは以下で確認できる。 https://cs.opensource.google/go/go/+/release-branch.go1.19:src/cmd/go/script_test.go 独自のコマンドを追加することができる。 Go のコンパイル時に使用される TestScript は以下で確認できる。 https://cs.opensource.google/go/go/+/master:src/cmd/go/testdata/script/ TestScript は txtar (テキストベースのアーカイブ形式) によって表現されている。 https://pkg.go.dev/golang.org/x/tools/txtar Go 内部のテストコードを使用できるよう、再構成されたものが以下で公開されている。 https://github.com/rogpeppe/go-internal/tree/master/testscript テストコードの書き方 # 定義済コマンドをテストで使用 # testdata/script/TestFoo/hello-world.txt exec echo 'hello world!' stdout 'hello world!\n' sample_test.go package sample_test import ( "path/filepath" "testing" "github.com/rogpeppe/go-internal/testscript" ) var scriptDir = filepath.Join("testdata", "script") func TestFoo(t *testing.T) { t.Parallel() testscript.Run(t, testscript.Params{ Dir: filepath.Join(scriptDir, t.Name()), WorkdirRoot: t.TempDir(), }) } 独自のコマンドを作成してテストで使用 # testdata/script/TestFoo/hello-world. ...

Go Check List

March 31, 2022
Go, Golang, Check List

Go Check Sheet # References # Style Guide Effective Go Go Code Review Comments Uber Go Style Guide Knowledge プログラミング言語Go完全入門 よくわかるcontextの使い方 Goでの並行処理を徹底解剖! Goで時刻を扱うチートシート Goにおけるjsonの扱い方を整理・考察してみた ~ データスキーマを添えて Go言語のジェネリクス入門(1) Go言語のジェネリクス入門(2) インスタンス化と型推論 Workspace mode Testing Advanced Testing with Go Goのテーブル駆動テストをわかりやすく書きたい Library multierr testscript Static Analytics goleak errcheck gosec tennvet fieldalignment 設計 # パッケージ管理 # Go Modules (go.mod) 設計 # 分割 パッケージを適切に分割 ファイルを適切に分割 命名 大文字なしの1単語 UpperCamelCase, snake_cake, chain-case は NG 具体性のない命名は NG e.g. common や util などは NG fileutil のように具体性がある命名は許容範囲 標準/準標準パッケージと同じ名前は避けること 気持ちの良い命名は良い設計ができた証拠 冗長な命名は設計がうまくいっていない証拠 適切に型定義すること 多くの引数を引き回さないこと 何でもかんでも構造体にしないこと e. ...

How to downgrade Go version on Mac

March 31, 2022
Go, Golang, Check List

Downgrade Go version on Mac # % brew upgrade % go version go version go1.21.0 darwin/arm64 % brew unlink go % brew search go@1.18 % brew install go@1.18 % brew link --force go@1.18 % echo 'export PATH="/opt/homebrew/opt/go@1.18/bin:$PATH"' >> ~/.zshrc % source ~/.zshrc % go version go version go1.18.10 darwin/arm64

Go Link

July 31, 2021
Go, Golang, Link

Go Link # Style Guide # Uber Go Style Guide Uber Go Style Guide(Japanese) Video # Go Conference # 2022 Spring Track A 2022 Spring Track B 2021 Autumn Track A 2021 Autumn Track B 2021 Spring Track A 2021 Spring Track B Article # Go GitHub Go Spec Go Release Go Download Go の命名規則 Goのロギングライブラリ 2021年冬 私がGoのソースコードを読むときのTips Goの標準ライブラリのコードリーディングのすすめ インタフェースの実装パターン Goのinterfaceをデータ構造から理解する Go First Step The Go Playground A Tour of Go Effective Go Standard library Project Layout (Directory Structure) Error handling and Go Context go-safeweb SQL Injection, XSS, XSRF etc. ...

Go Test

July 31, 2021
Go, Golang, Test, Testing

Go Test # Unit Test # Run # Run all unit tests # $ go test ./... Show detailed information $ go test ./... -v Disable test cache $ go test ./... -count=1 Run a method of a unit test # $ go test ./mypkg/ -run TestSample Coverage # Output coverage to a terminal $ go test -cover ./... Output the coverage profile to a file and view it in a browser ...

Hugo

January 1, 2020
Hugo, Go, Golang, static contents

Hugo # What’s Hugo? # Hugo is a fast and flexible static site generator made of Golang. https://gohugo.io/about/ Preparation # Create a git repository using GitHub # Repositories > New Repository name: sample Click “Create repository” Install Hugo on macOS # $ brew install hugo Build a blog using Hugo # $ GITHUB_USERNAME=xxxx $ GIT_REPOSITORY=sample $ hugo new site ${GIT_REPOSITORY} $ cd ${GIT_REPOSITORY} $ echo "# ${GIT_REPOSITORY}" >> README.md Initialize git # $ git init If you want to change the configrations of git ...