Golang创建动态函数(在运行时)

时间:2014-02-16 16:03:07

标签: http web network-programming go webdev.webserver

我需要一些帮助来开发一个Web服务器。我从http://golang.org/doc/articles/wiki/获取了初始代码,特别是这个例子:

func handler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Hi there, I love %s!", r.URL.Path[1:])
}

func main() {
    http.HandleFunc("/", handler)
    http.ListenAndServe(":8080", nil)
}

这段代码很容易理解,因为它只是将一个get请求转到“localhost”重定向到输出html的处理函数。

我遇到的问题是,在我的服务器中,我将在我的页面中使用javascript链接(特别是JQ和图像等)。因此,当GET请求进入那些工件时,我需要将它们作为字节从驱动器中提取出来并将它们提供给处理程序中的客户端浏览器(如上所述)。

然而;在运行时之前,我不知道哪些文件位于本地文件夹中,因此我无法预先制作这些处理程序。我想知道是否有办法在运行时动态生成函数。所以我想的psuedocode会是这样的:

for file in files:
    http.HandleFunc(file.location, handler)

如果我可能以错误的方式解决这个问题,如果有人在阅读完这些本地文件后有想法创建处理程序,请告诉我。我也不知道文件的数量或数量,但我可以使用Golang来读取所有文件。

谢谢!

1 个答案:

答案 0 :(得分:-1)

正如@Not_a_Golfer所述;这可以通过FileServer来完成静态文件。在我的情况下,由于我有许多未知文件,因此效果很好。