Untuk menjawab pertanyaan Anda tentang cara memformat string, jawaban sederhananya adalah menggunakan fmt.Sprintf untuk menyusun string Anda. Namun lihat lebih jauh ke bawah untuk catatan singkat tentang penggunaan fmt.Sprintf untuk kueri db:
Contoh:
query := fmt.Sprintf("SELECT id FROM users WHERE login='%s'", login)
err = db.Query(query)
// Equivalent to:
rows, err := db.Query("SELECT id FROM users WHERE login=?", login)
Menggunakan ini untuk kueri, Anda aman dari suntikan. Meskipun demikian, Anda mungkin tergoda untuk memodifikasi ini dan menggunakan db.Exec untuk pembuatan/pembaruan/penghapusan juga. Sebagai aturan umum, jika Anda menggunakan db.Exec dengan fmt.Sprintf dan tidak membersihkan input Anda terlebih dahulu, Anda membuka diri untuk injeksi sql .
GoPlay dengan contoh sederhana mengapa fmt.Sprintf dengan db.Exec buruk:
https://play.golang.org/p/-IWyymAg_Q
Anda harus menggunakan db.Query atau db.Prepare dengan cara yang tepat untuk menghindari vektor serangan semacam ini. Anda mungkin harus mengubah contoh kode di atas untuk menghasilkan cuplikan yang aman untuk injeksi, tetapi semoga saya memberi Anda cukup untuk memulai.