yn2011's blog

技術メモ

Go

Go の module cache と vendor の違い

Go

Go の module cache と vendor の違いがよく分からなかったので調べた。結論としては、違いというか go.mod に記述されているバージョンによってデフォルトで module cache と vendor のどちらを go run や go build 時に使うかが異なる。 環境 Go 1.15.3 $G…

そもそも reflection とは何なのか

Go 言語を勉強していて reflection って何なんだろ、となったので調べた内容を書いておく。 そもそも reflection とは何なのか 自己書き換えコード reflection はメタプログラミング メタプログラミング なぜメタプログラミングしたいのか 実行時にしか分か…

Go の型システム周りについてのメモ

Go

Go の型システムについて、今理解していることを書く。もしかしたら間違っているかもしれない。 Go の型システム 型同士に階層がない(サブタイプ・スーパタイプのような関係がない) 型は名前によって区別される。階層がないので、ある型が要求された場合に…

VSCode で Go を書くための環境構築

環境 macOS 10.14.6 VSCode 1.44.2 ゴール 高速な補完、フォーマット、シンタックスハイライトが VSCode で動作する vim-go の :GoImport のようにモジュールを選択して import できる VSCode でデバッグできる(標準入力を伴う場合は入力した上でデバッグし…

HerokuでDocker, Go, Postgresを使ってAPIサーバを動かしてみた感想

環境 モチベーション どうやったか できたもの 手順 Heroku addonsのPostgresについて Dataclips pgsql Dockerを利用したHeroku デプロイについて その他 環境 mac OS 10.14.6 Go 1.12.4 モチベーション データのCRUDを伴うWebAPI(とDB)をサクッと作って公開…

urfave / cliを使ってGoでCLIアプリを作ってみた

Go

環境 macOS 10.14.6 go 1.12 urfave / cli v2.1.0 作ったもの github.com 何だこれは 苺ましまろという作品に登場するキャラクターの台詞を出力するだけのアプリ。 台詞は3パターンしか登録していない。アナちゃんと茉莉ちゃんは未対応。 モチベーション 久…

Go modules利用時にvscode-goのinferGopathが無効化される理由

環境 VS Code バージョン1.36.1 (1.36.1) go version go1.12.4 darwin/amd64 事象 vscode-goにはワークスペースやユーザ毎に$GOPATHを推測するgo.inferGopathというオプションがあり、自分は常に有効化している(VSCodeでGoのデバッグにも以前に書いた) go.…

httptest.Serverとhttptest.ResponseRecorderの使い分け

Go

環境 httptest.Serverとhttptest.ResponseRecorder httptest.Server httptest.NewRecorder 関連:NewRecorderを利用する場合にserveHTTPを使用する必要があるのか 参考 環境 go1.12.4 darwin/amd64 httptest.Serverとhttptest.ResponseRecorder ServerとResp…

VSCodeでGoのデバッグ

今更感はあるがVSCodeでGoのソースコードをデバッグしてみたので記録。 環境 delveインストール VSCodeにテスト対象の$GOPATHを認識させる launch.jsonを作る デバッグする まとめ 環境 macOS 10.14.4 go1.12.4 darwin/amd64 VSCode バージョン1.32.1 vscode…

型アサーションでインターフェイス型から本来の型を取り出す際の演算子*

環境 go1.12.4 darwin/amd64 インターフェイス型の型アサーション Goでは、以下のようにインターフェイスのエイリアスであるStatement型の変数から実際の型であるExpressionStatementを型アサーション.(T)によって取り出すことができる。 package main impor…