将结构映射到go中的函数

时间:2019-01-10 19:46:55

标签: go

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
    }

}

我无法弄清楚是什么语法错误导致我无法将Route结构映射到函数。

我收到此错误:

  

./ main.go:24:26:语法错误:意外{,期望(

     

./ main.go:25:8:语法错误:意外的{,期待逗号或

1 个答案:

答案 0 :(得分:2)

  1. 类型不是func,而是func()
  2. 您需要注意url.Parse的错误

有一个重构的代码:

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)

}

如果您不知道输入的处理方式,恐慌的解决方案可能不是最好的。