改善点 github.com/go-sql-driver/mysql (以降 go-mysql) の v1.8 から、Scanの振る舞いが変わります。 go-mysql v1.7.1 までは、次のコードの2つのクエリのScan結果は異なっていました。 // db の接続設定で interpolateParams が false の場合 var v any db.QueryRow("SELECT 123 WHERE ? = 1", 1).Scan(&v) fmt.Printf("%T %v\n", v, v) // int64 123 db.QueryRow("SELECT 123 WHERE 1 = 1").Scan(&v) fmt.Printf("%T %v\n", v, v) // []uint8 [49 50 51] go-mysql v1.8 (未リリース)からは、これが上の動作に
![go-mysqlでany型へのScan()が使いやすくなります](https://cdn-ak-scissors.b.st-hatena.com/image/square/f892f6c6e8934d5f097db1fd48d5d8a5e484497f/height=288;version=1;width=512/https%3A%2F%2Fres.cloudinary.com%2Fzenn%2Fimage%2Fupload%2Fs--TCkw-W1b--%2Fc_fit%252Cg_north_west%252Cl_text%3Anotosansjp-medium.otf_55%3Ago-mysql%2525E3%252581%2525A7any%2525E5%25259E%25258B%2525E3%252581%2525B8%2525E3%252581%2525AEScan%252528%252529%2525E3%252581%25258C%2525E4%2525BD%2525BF%2525E3%252581%252584%2525E3%252582%252584%2525E3%252581%252599%2525E3%252581%25258F%2525E3%252581%2525AA%2525E3%252582%25258A%2525E3%252581%2525BE%2525E3%252581%252599%252Cw_1010%252Cx_90%252Cy_100%2Fg_south_west%252Cl_text%3Anotosansjp-medium.otf_37%3Amethane%252Cx_203%252Cy_121%2Fg_south_west%252Ch_90%252Cl_fetch%3AaHR0cHM6Ly9saDMuZ29vZ2xldXNlcmNvbnRlbnQuY29tL2EtL0FPaDE0R2h4RE5nS2F5a3FreGhkeUZMaG9Yc3hRVk9QVFVrd3hqTngtZGlxT05FPXMyNTAtYw%3D%3D%252Cr_max%252Cw_90%252Cx_87%252Cy_95%2Fv1627283836%2Fdefault%2Fog-base-w1200-v2.png)