сопоставить структуру с функцией в го - PullRequest
0 голосов
/ 10 января 2019
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 голосов
/ 10 января 2019
  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)

}

Решение с паникой может быть не самым лучшим, если вы не знаете, какие у вас данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...