我想把我的路由器配置放在extern json配置文件中,如下所示:
<div class="col-md-9">
<h1>Header</h1>
<h3>Ipsum Industries Subheader</h3>
<p>This is the left column text</p>
</div>
<div class="col-md-3">
<h1> </h1>
<h3> </h3>
<p>This is where I want the text to constantly be next to the <p> element in the left column</p>
</div>
我的相关结构看起来像这样:
{
"routes": [
{
"name": "Index",
"method": "GET",
"pattern": "/",
"handler": "Index"
},
{
"name": "CountsIndex",
"method": "GET",
"pattern": "/counts",
"handler": "CountsIndex"
}
]
}
问题是handlerFunc。当我得到配置它将是一个字符串,但如何使它成为一个值?我可以以某种方式投出它吗?
发生以下错误:
json:无法将字符串解组为http.HandlerFunc类型的Go值
由于
答案 0 :(得分:4)
最简单的解决方案是使用字符串而不是http.HandlerFunc作为类型,并使用函数定义一个映射。
var functions = map[string]interface{}{
"func1": func1,
}
然后在解组你的json之后你可以使用每个路由的handlername分配处理程序
答案 1 :(得分:2)
问题是,并非每个数据都可以封送到json(或解组)。 http.HandlerFunc不是函数(https://golang.org/pkg/net/http/#HandlerFunc)。你不能直接把它 - 但你可以把处理程序更改为字符串,当你试图调用它时,从反射(一个非常复杂的)或准备好的地图[string] HandlerFunc获取HandlerFunc。