У меня есть функция вроде следующего для запросов к базе данных Монго:Передача различных структур функции (GO)?
func findEntry(db, table string, entry *User, finder *bson.M) (err error) {
c := mongoSession.DB(db).C(table)
return c.Find(finder).One(entry)
}
я хотел бы повторно использовать функцию для других, чем «User» структур, передав указатель на какой-либо объект, экземпляр структуры - просто не совсем уверен в правильной семантике для этого. Я думаю, что я должен это сделать, сделав параметр «entry» интерфейсом {}, и тогда мне нужно будет использовать отражение, чтобы «отбросить» его обратно на исходную структуру, чтобы вызов функции One() мог правильно заполнить в структуре на вызов? Есть ли «лучший» способ сделать это (пожалуйста, не пылайте отсутствием дженериков, я просто ищу практическое решение, используя лучшие практики).
вот как вы это делаете, нет другого пути :) и не пылает идиомами. –
Если ваша функция на самом деле одна линия длинная (распространяется на две строки): Почему бы не выполнить несколько таких функций, как findUser findOther, findSomethingElse ...? – Volker