1. 程式人生 > >go get獲取的依賴庫和dep獲取的vendor目錄下的依賴庫不一致的問題------玩下Gopkg.toml

go get獲取的依賴庫和dep獲取的vendor目錄下的依賴庫不一致的問題------玩下Gopkg.toml

        程式碼:

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" 

 

       好好理解下, 不多說。