はい!今やってます!

Work Pertly, Live Idly

Golang

無名関数の中でdeferを呼んだ時の動作の検証

Code package main import ( "fmt" "errors" ) func main() { fmt.Println("---- main start ----") var err error defer func() { fmt.Println("---- main defer start ----") if err != nil { fmt.Println("--> err in main defer") fmt.Println(err) } fm…

GoでMarkdown内の画像コンテンツを正規表現でマッチさせる

// Match image file path r := regexp.MustCompile(`\!\[.+?\]\(([^\s\)]+).*\)`) match := r.FindAllStringSubmatch(content, -1) // Image Tag Pattern // ![foo](/image/hoge/fuga.jpg) // ![foo](/image/hoge/fuga.jpg "画像タイトル") // [![foo](/ima…

GormのPreloadでorder by構文を使いたくなったとき

GormでPreloadの中でorder by 呼びたくなった場合、以下のような書き方(Preloadの中に記述)をすると、 Preloadの中身をよしなにorder byしてくれる。 Preloadの条件式(where)との併用も可能。 err := tx. Limit(limit). Offset(offset). Where("status = ?…

GormのPreload時のstatusチェックの挙動

GormのSQLでPreloadを利用する場合、各モデルと紐付けるタイミングで条件を指定したくなる場合がある。 Preloadに条件指定する場合に、上手く実行されるケースとされないケースがある。 こちらは正しくすべてのテーブルでstatusが指定される。 func (questio…

ginでcontextからHeaderの情報を取得する方法

ginでcontextからHeader情報を取得したいときは key := c.Request.Header.Get("key") こんな感じで取得可能。 以上

logrusでログの行数とファイル名を出力したい

logrusを利用していて、ファイル名(filename)や行数(line number)を出力したくなったときは、 SetReportCaller(true) という感じのメソッドを呼んでやればよい package main import ( log "github.com/sirupsen/logrus" ) func main() { log.SetReportCaller…

GolangでサクッとStructの中身が知りたいとき

ここらへんでサクッと見れる fmt.Printf("%+v\n", hogehoge) fmt.Printf("%#v", hogehoge)

Macのローカル環境にVisual Studio CodeでGoの開発環境を構築する

phpやhack、go、ruby on rails等ちょくちょく触れる機会があるのですが、 Java出身者としては、eclipseで得たユーザー体験が忘れられず、 goの開発環境を真面目に作ってみることにしました。 各バージョンについて Mac : OSX(10.11.6 ElCapitan) Go : go1.8 …

MacでローカルにgvmでGoをインストールするとエラー

バージョン一覧 gvm version Go Version Manager v1.0.22 installed at /Users/uedayuji/.gvm clang --version Apple LLVM version 7.3.0 (clang-703.0.31) Target: x86_64-apple-darwin15.6.0 Thread model: posix InstalledDir: /Applications/Xcode.app/C…

Go言語のマスコットキャラクターが可愛いのでぬいぐるみが欲しい

GopherのぬいぐるみはGoogle Storeで約10$で購入可能。 Go Gopher Squishable - Google Store