无法轻松找到有关如何在Golang中创建自调用功能的信息。
我的最终目标是从文件中导出地图,如下所示:
type Foo struct {}
type Bar struct {}
var TypeMap map[interface{}]string;
func selfInvoking(){
TypeMap = map[interface{}]string{
Foo: "foo",
Bar: "bar"
}
}()
如何从Go中的文件中导出像这样的填充地图?基本上是一次性配置。
使用上面的模式,我会得到
“未使用的变量TypeMap”。
答案 0 :(得分:4)
有3种方法可以执行GO
中的初始化代码:
您可以使用最后两个。
变量:
var TypeMap = map[interface{}]string{
Foo{}: "foo",
Bar{}: "bar",
}
init函数:
var TypeMap map[interface{}]string
func init(){
TypeMap = map[interface{}]string{
Foo: "foo",
Bar: "bar",
}
}
在任何情况下,请务必注意初始化程序,不要将其用于任何复杂的代码或io
代码。
初始化程序对于单元测试和错误处理/记录不是很好。
答案 1 :(得分:1)
不确定您要达到的目标,但这至少可以编译
app.get('/recipe', (req, res) => {
if (req.query.ingredients) {
let ingredientMap = req.query.ingredients.map(x =>
Recipe.find({ingredients: {$regex: new RegExp(JSON.parse(x).name)}}));
return Promise.all(ingredientMap).then((results) => {
if (!results) {
res.status(404).send();
}
let filteredResults = results.filter(x => {
return typeof x !== 'undefined' ? x[0] : null
});
let merged = [].concat.apply([], filteredResults);
res.status(200).send(merged);
}).catch( e => {
res.status(400).send();
})
}
});