2016-12-06 71 views
4

此文件:我怎樣才能讓goimports比另一個更喜歡一個包?

package foo 

func errorer() error { 
    return errors.New("Whoops") 
} 

將轉變到這與goimports

package foo 

import "errors" 

func errorer() error { 
    return errors.New("Whoops") 
} 

不過,我想在這個項目中隨處可見使用github.com/pkg/errors包,而不是errors包。

我能告訴goimports始終偏愛github.com/pkg/errors包嗎?

+0

我不認爲你可以。只需手動導入github.com/pkg/errors即可。 – Volker

+0

歡迎來到「goimports」的世界和它錯誤的包裝進口。等到你到達'templates'!實際上,擺脫這種自動化的進口管理,只需要自己學習包裝 - 以後再感謝我們。此外,要在任何IDE(VIM,Atom,Sublime,VS Code,VS,IntelliJ - iive都使用!)中擁有適當的智能感知,*您需要首先指定導入!* – eduncan911

回答

1

我還沒有試過,但根據在文檔: https://github.com/golang/tools/blob/master/cmd/goimports/doc.go

從掃描的圍棋 文件排除在$ GOPATH目錄,goimports尊重在 $ GOPATH配置文件/ src/.goimportsignore可能包含空白行,註釋 行(以'#'開頭)或命名相對於 的目錄的行,這些配置文件在掃描時將被忽略。不允許使用通配符或正則表達式 模式。使用「-v」詳細標誌來驗證它正在工作 並查看goimports正在做什麼。

所以你可以嘗試排除錯誤目錄。

+0

這些適用於GOPATH下的包,命令一個目錄**相對**到配置 –

3

使用.goimportsignore在您的情況下不起作用,因爲您要忽略的程序包位於標準庫中,而不在GOPATH下。

-local標誌也不起作用,因爲這兩個包具有相同的名稱,所以errors仍將選擇爲pkg/errors

你的選擇是使用golang.org/x/tools/imports

或者其他不方便的辦法是,以確保您撥打error.Wrap或其他功能一個第一次在一個新的文件,而不是errors.New這樣寫自己的goimports版本那goimports可以識別pkg/errors

相關問題