猿问

Go 无法调用 NewRouter() 函数

我是 Go 的新手,但我正在尝试使用 Gorilla Mux 创建一个 RESTful API,以根据这篇文章创建我的路由器http://thenewstack.io/make-a-restful-json-api-go/


我有一个包含以下代码的路由器文件。


package main


import (

    "net/http"

    "github.com/gorilla/mux"

)


type Route struct {

    Name        string

    Method      string

    Pattern     string

    HandlerFunc http.HandlerFunc

}


type Routes []Route


func NewRouter() *mux.Router {


    router := mux.NewRouter().StrictSlash(true)

    for _, route := range routes {

        router.

            Methods(route.Method).

            Path(route.Pattern).

            Name(route.Name).

            Handler(route.HandlerFunc)

    }

    return router

}


var routes = Routes{

    Route{

        "Index",

        "GET",

        "/",

        Index,

    },

}

在我的 Main.go 中,我有这个:


package main


import (

    "log"

    "net/http"

)


func main() {

    router := NewRouter()

    log.Fatal(http.ListenAndServe(":8080", router))

}

根据我对 Go 的了解以及如何从另一个文件调用一个文件中的方法,这应该可行。但是当我运行: go build Main.go 时,我在控制台中收到此错误:


go run Main.go

# command-line-arguments

./Main.go:10: undefined: NewRouter

我已经在我的 src 文件夹中运行了go get,该文件夹中包含我的所有文件以获取 gorilla ,但这并没有解决它。我在这里做错了什么?


慕神8447489
浏览 263回答 1
1回答

largeQ

如果您的main包包含多个.go文件,则必须将所有文件都传递给go run,例如:go run Main.go Router.go
随时随地看视频慕课网APP

相关分类

Go
我要回答