go get獲取的依賴庫和dep獲取的vendor目錄下的依賴庫不一致的問題------玩下Gopkg.toml
阿新 • • 發佈:2018-12-01
程式碼:
package main
import (
"fmt"
"github.com/satori/go.uuid"
)
func main() {
u1 := uuid.Must(uuid.NewV4())
fmt.Printf("UUIDv4: %s\n", u1)
u2, err := uuid.NewV4()
if err != nil {
fmt.Printf("error: %s", err)
return
}
fmt.Printf("UUIDv4: %s\n", u2)
}
用go get -u github.com/satori/go.uuid, 上述程式執行OK, 但是如果用dep init獲取,就出現如下錯誤:
# command-line-arguments
./a.go:9:17: not enough arguments in call to uuid.Must
have (uuid.UUID)
want (uuid.UUID, error)
./a.go:12:10: assignment mismatch: 2 variables but 1 values
原因是:go get -u github.com/satori/go.uuid獲取的包和dep init獲取的包(vendor目錄下)不一致
解決方法1: 不用vendor
解決方法2: 刪除dep init生成的Gopkg.lock和vendor, 修改 Gopkg.toml中的內容, 然後dep ensure去獲取對應分支的依賴庫。 修改的內容如下:
[[constraint]]
name = "github.com/satori/go.uuid"
#version = "1.2.0"
branch = "master"
好好理解下, 不多說。