Olá,
Entendo que deixar o defer que fecha a conexão com o banco de dados pro final da função não seja muito legal, pois em caso de panic ele não será executado. A boa prática, até onde entendo, é posicionar o defer que libera recursos logo após a linha em que o recurso é criado. Assim ele será executado mesmo em caso de panic.