db.Exec возвращает интерфейс error, вам нужно его попробовать привести к *pq.Error, чтобы обработать.
_, err := db.Exec(insert)
if err != nil {
if pgError,ok := err.(*pq.Error); ok {
// Достаём код из переменной pgError
} else {
// Пришедший тип не является *pg.Error
}
}
И самое главное!
НИКОГДА не используйте Sprintf для формирования запроса, вы открываете
SQL Injection в вашем коде. Используйте возможность подстановки, которую даёт вам пакет database/sql
db.Query("select id, name from users where id = ?", 1) // Вот так, например