2017-03-21 40 views
0

如何正確引用項目包?我有以下文件夾結構:Go package命名

/sbp 
    /models.go 
    /controllers.go 
/main.go 

main.go我想從sbp.controllers打電話給我的控制器操作。我似乎無法找到一個方法來正確地引用它

main.go

package main 

import (
    "net/http" 

    ... 
    "github.com/pressly/chi" 
) 

var sess = session.Must(session.NewSession(&aws.Config{ 
    Region: aws.String("ap-southeast-1"), 
})) 
var dynamo = dynamodb.New(sess) 

func main() { 
    r := chi.NewRouter() 
    r.Get("/", GetInvestments) // How do I call sbp.controller.GetInvestments? 
    r.Post("/", AddInvestment) 
    http.ListenAndServe(":8080", r) 
} 

sbp/controller.go

package sbp 

import (
    "net/http" 
    "time" 

    "github.com/pressly/chi/render" 
) 

// AddInvestment Adds an investment 
func AddInvestment(w http.ResponseWriter, r *http.Request) { 
    ... 
} 

// GetInvestments Gets list of investments 
func GetInvestments(w http.ResponseWriter, r *http.Request) { 
    ... 
} 

我試着輸入 「收縮壓/控制器」,甚至是「github上.com/jiewmeng /金融/ sbp /控制器「,但他們似乎是自動刪除我的VSCode,所以我認爲它無效?

回答

1

聽起來你的編輯器自動運行goimports,這意味着它會刪除未使用的導入。所以簡單地將它添加到你的imports部分是不夠的;你也必須使用的導入。

它看起來像你正確的導入路徑將是「github.com/jiewmeng/finance/sbp」。然後你需要參考它:

package main 

import (
    // other imports 
    "github.com/jiewmeng/finance/bp" 
) 

func main() { 
    // whatever 
    http.Handle("/somepath", http.HandlerFunc(sbp.AddInvestment)) 
} 
0

首先,你需要確定你的源代碼的位置。

也許這是後$ GOPATH/src目錄/(path_to_your_project)

因此,在這種情況下,你應該導入

import "path_to_your_project/sbp" 

和最終代碼的其他路徑:

func main() { 
    r := chi.NewRouter() 
    r.Get("/", sbp.GetInvestments) 
    r.Post("/", sbp.AddInvestment) 
    http.ListenAndServe(":8080", r) 
}