Сразу пару примечаний:
- у меня нет опыта работы в языках со статической типизацией
- вопрос не в том, как решить задачу, а в том, чтобы найти хорошее стандартное решение
- если есть какие-то хаки конкретно в go для таких задач - то они не особо интересны, потому что те же данные (структуру данных) нужно будет делать в gRPC.
Суть задачи: необходимо передать данные для фильтрации, с двумя параметрами: поле, по которому будет делаться фильтрация, и значение, по по которому будут отбираться данные из базы. Так как поле может быть любым, то и данные могут быть любого типа: string, int, bool и т.д.
Решение, которое пришло сходу, это передавать значение отдельным объектом (структурой), в котором будет указано, какого типа это значение:
{
"type": "string",
"value": {
"string": "filter value",
"int": 0,
"bool": false
}
}
А данные по фильтрации в целом будут выглядеть так:
{
"filed": "field_name",
"value": {
"type": "int",
"value": {
"string": "",
"int": 100,
"bool": false
}
}
}
Ну и логика работы с таким форматом понятна - смотрим, какой тип данных, и получаем его значение из нужного поля.