Я использую сторонний пакет, который позволяет создавать структуры определенного неэкспортированного типа с помощью экспортируемой функции.
package squirrel
type expr struct {
sql string
args []interface{}
}
func Expr(sql string, args ...interface{}) expr {
return expr{sql: sql, args: args}
}
Из-за способа, которым некоторые другие функции этой библиотеки принимают данные, я получил такую карту:
m := map[string]interface{} {
"col1": 123,
"col2": "a_string",
"col3": Expr("now()"),
}
но из-за другой функции в этой библиотеке мне нужно отфильтровать все squirrel.expr
из этой карты.
Очевидно, я не смог установить тип напрямую, так:
filtered := make(map[string]interface{})
for k, v := range m {
switch v.(type) {
case squirrel.expr:
continue
default:
filtered[k] = v
}
}
Есть ли другой способ достичь того же результата?