【发布时间】:2019-08-31 16:09:13
【问题描述】:
我正在使用 3rd 方包,它允许您通过导出的函数创建某种非导出类型的结构。
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
}
}
还有其他方法可以达到同样的效果吗?
【问题讨论】:
-
你试过reflection吗?
-
@mkopriva 还没有。我是这门语言的新手,到目前为止我还没有使用过。