2020-03-01から1ヶ月間の記事一覧
net/http の handleFunc() handle() に登録できるパスは Path Parameter を認識しない。例えば、他の Web フレームワークのように、下記 /products/:id エンドポイント中の :id を変数として取得することができない。 // :idを変数としてパースできない http…
-race オプション Go バイナリ実行時、 -race オプションを指定することで競合状態のテストを実施することができる。具体的には go -race run go -race build のようにコード実行時、バイナリビルド時に指定できる。 ただし実行可能な環境は linux/amd64、fr…
Golang のメモリ使用量やゴルーチン数など、実行時ランタイムに関係するステータスを観測するには、 runtime パッケージを使用する。 Memory var m runtime.MemStats runtime.ReadMemStats(&m) // ヒープ上に割り当てられたオブジェクト累積メモリ量 fmt.Pri…
Go の map はスレッドセーフでない Go の map はスレッドセーフ、もといゴルーチンセーフではない。そのため、複数のゴルーチンからの同時アクセスによって整合性が保たれない状態になることがある。 例えば、以下のように map に対して複数のゴルーチンから…
TL;DR 下記コマンドで、カレントディレクトリ配下のすべての .go ファイルの import 文を整形してくれる。 $ find . -print | grep --regex '.*\.go' | xargs goimports -w -local "github.com/your/package" goimports の -w オプションでファイルを直接書…
Go における Context とは 大事なことは全部 Document に書いてある。おしまい。 context - The Go Programming Language ・・・と言ってしまうと元も子もないので、自分なりに整理してみる。 Go の Context を要約すると、 Web アプリケーションで横断的に…
PostmanはOpenAPIと互換性があり、OpenAPI Specification(以下OAS)に沿って書かれたAPIドキュメントはPostmanへimportできる。一方で、PostmanからOpenAPIへのexportはサポートされていない。これはPostmanへのFeature requestとしても挙がっており、そこそ…