2014-09-19 38 views
1

我發現了以下錯誤下面導入代碼:導入和未使用的錯誤

代碼: 包主要

import (
    "log" 
    "net/http" 
    "os" 
    "github.com/emicklei/go-restful" 
    "github.com/emicklei/go-restful/swagger" 
    "./api" 
) 

錯誤:

.\main.go:9: imported and not used: "_/c_/Users/aaaa/IdeaProjects/app/src/api" 

是否有一個原因導入不工作,因爲我有package api和文件存儲在api文件夾下?

我用下面使用api在main.go

func main() { 
    // to see what happens in the package, uncomment the following 
    restful.TraceLogger(log.New(os.Stdout, "[restful] ", log.LstdFlags|log.Lshortfile)) 

    wsContainer := restful.NewContainer() 
    api := ApiResource{map[string]OxiResp{}} 
    api.registerLogin(wsContainer) 
    api.registerAccount(wsContainer) 
    api.registerLostLogin(wsContainer) 
    api.registerWallet(wsContainer) 
} 

回答

4

編譯器查找實際使用包 ..不存在的事實。

您需要使用該軟件包中的內容或刪除導入。例如:

v := api.Something ... 

如果您在源文件中沒有使用該軟件包中的任何內容,則不需要導入它。也就是說,除非你想讓init函數運行。在這種情況下,您可以使用忽略符號import _

編輯:

您的更新後,它將顯示你在這裏改寫包導入:

api := ApiResource{map[string]OxiResp{}} 

聲明瞭一個名爲api變量。現在編譯器認爲它是一個變量,所以你實際上並沒有使用api包。你正在使用api變量。

您有幾個選項。

首先,你可以調用變量別的東西(也許我會做什麼):

apiv := ApiResource{map[string]OxiResp{}} 

或者,你的別名導入(不是我會做什麼..但仍然一個選項):

import (
    // others here 
    api_package "./api" 
) 

問題是編譯器對使用什麼感到困惑。 api包..或api變量已聲明。

您還應該通過GOPATH而不是相對導入包。

1

首先,不要使用相對導入。

如果您的GOPATH包含/Users/aaaa/IdeaProjects/app/src,那麼將您的包導入爲api

接下來,您正在使用指向api :=的任務對api進行遮蔽。使用不同的名稱。

相關問題