2016-01-20 38 views
0

我是新來走,但我試圖創建一個使用複用大猩猩基於本文http://thenewstack.io/make-a-restful-json-api-go/圍棋不能打電話NewRouter()函數

我有一個路由器文件與上創建我的路由器一個RESTful API下面的代碼。

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)) 
} 

從我知道要去哪裏以及如何從另一個這種調用方法在一個文件應該工作。但是,當我運行:去建立Main.go我得到這個錯誤在我的控制檯:

go run Main.go 
# command-line-arguments 
./Main.go:10: undefined: NewRouter 

我已經運行走在中有我的所有文件,以獲得大猩猩我src文件夾中獲得,但沒有解決它。我在這裏做錯了什麼?

回答

2

如果您main包由多個的.go文件,你必須全部傳遞給go run,例如:

go run Main.go Router.go 
+0

哦,我的天哪這就是尷尬!那正是它的意思......非常感謝你的回答! – CGideon