Fazendo consultas SQL dinâmicas em um banco de dados MySQL

Eu nunca usei golang com mysql antes, então estou lendo sobre eles pela primeira vez. Eu gostaria de fazer algo assim:

if userId && gender && age
db.QueryRow("SELECT name FROM users WHERE userId=? AND gender=? AND age=?", userId,gender,age)
else if gender && age
db.QueryRow("SELECT name FROM users WHERE gender=? AND age=?", gender, age)
else if userId && gender
db.QueryRow("SELECT name FROM users WHERE userId=? AND gender=?", userId,gender)
else if userId && age
db.QueryRow("SELECT name FROM users WHERE userId=? AND age=?", userId, age)
else if gender
db.QueryRow("SELECT name FROM users WHERE gender=?", gender)
else if userId
db.QueryRow("SELECT name FROM users WHERE userId=?", userId)
else if age
db.QueryRow("SELECT name FROM users WHERE age=?", age)

Isso é digitação demais, especialmente se eu tiver uma dúzia de variáveis a mais que gostaria de adicionar à condição WHERE.

Se fosse PHP, eu faria algo assim:

$sql = "SELECT name FROM users ";
$where = array();
foreach(explode(",","userId,gender,age,name,height,weight,ethnicity" as $field)
{
    if(isset($arrayOfValues[$field]))
    {
        $where[count($where)] = $field." = ?".$field
        $db->bind("?".$field,$arrayOfValues[$field]);
    }
}

if(count($where)>0)
$sql = $sql . " WHERE ".implode(" AND ",$where);
$db->query($sql);

Usando um loop foreach, posso gerar consultas dinamicamente e vincular dinamicamente quantas variáveis forem necessárias.

É algo como isso uma opção com golang e mysql? Ou existem alternativas para não digitar todas as combinações de variáveis para uma consulta?

questionAnswers(1)

yourAnswerToTheQuestion