将结构映射到go中的函数
我无法确定是什么语法错误阻止我将路由结构映射到函数 我得到这个错误: ./main.go:24:26:语法错误:意外{,应为( ./main.go:25:8:语法错误:意外{,应为逗号或)将结构映射到go中的函数,go,Go,我无法确定是什么语法错误阻止我将路由结构映射到函数 我得到这个错误: ./main.go:24:26:语法错误:意外{,应为( ./main.go:25:8:语法错误:意外{,应为逗号或) 类型不是func,而是func() 您需要处理url.Parse的错误 有一个重构代码: import ( "net/url" ) type Route struct{ filepath string url url.URL } func hello(){
func
,而是func()
url.Parse
的错误import (
"net/url"
)
type Route struct{
filepath string
url url.URL
}
func hello(){
fmt.Println("Hello World")
}
func main() {
routes := map[Route]func{
Route{url.Parse("/home"), "/var/www/index.html"} : hello
}
}
如果您不知道输入配置,使用panic的解决方案可能不是最好的。第一个错误是告诉您需要什么,
func
不是一个类型,但是func()
是。我找到了一些。url.Parse(/home”)返回err,而url。它试图为一个2参数的路由结构返回3个参数。Structs没有“参数”,路径和URL在结构声明中的顺序错误,URL.Parse返回一个*URL.URL
和一个错误
,而不是URL.URL
。您可能需要签出包含大量基本信息的。
package main
import (
"fmt"
"net/url"
)
type Route struct {
filepath string
url *url.URL
}
func hello() {
fmt.Println("Hello World")
}
func mustParse(rawURL string) *url.URL {
parsedURL, err := url.Parse(rawURL)
if err != nil {
panic(err)
}
return parsedURL
}
func main() {
routes := map[Route]func(){
Route{"/var/www/index.html", mustParse("/home")}: hello,
}
fmt.Printf("routes: %+v\n", routes)
}