bson.M
est un type de carte, donc le bson.M{ ... }
est un littéral de carte
. Si des paires clé-valeur sont écrites sur plusieurs lignes, chacune doit se terminer par une virgule. Pour plus de détails, voir Comment casser une longue ligne de code dans Golang ?
De plus, il n'y a pas de littéral "interface", laissez tomber. Une valeur de interface{}
type peut contenir/envelopper n'importe quelle valeur, y compris un bson.M
évaluer. Et l'interface{}
la création de valeur est automatique, vous n'avez même pas besoin de type conversion
.
Syntaxe correcte :
convIter := Session.Copy().DB("").C("convs").Find(bson.M{
"conversationStatus": bson.M{
"$ne": "DESTROYED",
},
}).Iter()
De même, si vous utilisez le bson.D
type (qui est une tranche), les lignes ne se terminant pas par le crochet fermant du littéral doivent se terminer par une virgule, par exemple :
d := bson.D{
{Name: "fieldA", Value: 1},
{Name: "fieldB", Value: "running"},
}