Goでlog.Fatal()を使ったらdefer文が実行されずプログラムが終了した。log.FatalはPrint後にos.Exit(1)を呼ぶため処理が続かない。エラーをログして処理を継続したいならlog.Print、回復不能ならlog.Fatal——実例で使い分けを解説します。
起きたこと GORM(v1.9.16)を使っていて、アソシエーションの削除がうまくいかなかったときにハマったのでその時の調査メモです。 Productモデルと、そこに紐づくShopモデルを並行して更新するようなプログラムを作成していました。 go:main.go package main import ( "github.com/my-best/products.my-best.com
Go言語でスライスから特定の値を持つ要素を削除する方法。Go 1.21以降はslices.DeleteFuncが使える。ループ中の削除パターン(インデックスのズレ対策)も合わせて解説。
GORMで実行されるSQL文を確認する2つの方法を紹介。Debug()メソッドで単一クエリを確認する方法と、Loggerを使って全体の流れを追う方法を解説します。
Goのnet/httpはデフォルトで自動リダイレクトしますが、http.Client.CheckRedirectにhttp.ErrUseLastResponseを返す関数を設定すると、リダイレクト前のレスポンス(301/302)を取得できます。Locationヘッダからリダイレクト先URLを取り出す実装例付き。
新しい記事をメールでお届けします。
新しい記事をメールでお知らせ