Para responder à sua pergunta sobre como formatar a string, a resposta simples é usar fmt.Sprintf para estruturar sua string. No entanto veja mais abaixo para uma nota rápida sobre o uso de fmt.Sprintf para consultas de banco de dados:
Exemplo:
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)
Usando isso para consultas, você está protegido contra injeções. Dito isto, você pode ficar tentado a modificar isso e usar db.Exec para criações/atualizações/exclusões também. Como regra geral, se você usar db.Exec com fmt.Sprintf e não higienizar suas entradas primeiro, você se abrirá para injeções de sql .
GoPlay com exemplo simples de por que fmt.Sprintf com db.Exec é ruim:
https://play.golang.org/p/-IWyymAg_Q
Você deve usar db.Query ou db.Prepare de forma adequada para evitar esses tipos de vetores de ataque. Você pode ter que modificar o exemplo de código acima para obter um snippet seguro para injeção, mas espero ter dado a você o suficiente para começar.