在Go 1.6中供应

Ros*_*mbo 5 go vendor

我已经阅读了尽可能多的文档和StackOverflow文章,但我没有运气使用Go 1.6中的新供应商功能导入.

这是我与Goji一起测试的示例项目.目录结构如下:

.
??? src
    ??? main.go
    ??? vendor
        ??? github.com
            ??? zenazn
                ??? goji
                    ??? LICENSE
                    ??? README.md
                    ??? bind
                    ??? default.go
                    ??? example
                    ??? goji.go
                    ??? graceful
                    ??? serve.go
                    ??? serve_appengine.go
                    ??? web
Run Code Online (Sandbox Code Playgroud)

并且main.go,项目中的唯一文件是这样的:

package main

import (
    "fmt"
    "net/http"

    "github.com/zenazn/goji"
    "github.com/zenazn/goji/web"
)

func hello(c web.C, w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Hello, %s!", c.URLParams["name"])
}

func main() {
    goji.Get("/hello/:name", hello)
    goji.Serve()
}
Run Code Online (Sandbox Code Playgroud)

我的环境变量是这样的:

export GOPATH=~/.go
export GOBIN=$GOPATH/bin
export PATH=$PATH:/usr/local/opt/go/libexec/bin:$GOBIN
Run Code Online (Sandbox Code Playgroud)

我尝试过最简单的构建命令,没有运气:

go run ./src/main.go
go build ./src/main.go
Run Code Online (Sandbox Code Playgroud)

我也试图建立:

$GOPATH=`pwd`
Run Code Online (Sandbox Code Playgroud)

......无济于事 我完全错过了什么吗?任何建议表示赞赏.

kos*_*tya 9

我建议你阅读https://golang.org/doc/code.html.它需要一两天才能消化,但在您了解了工具如何使用源代码和GOPATH后,它们就非常容易使用.

回到你的问题.要构建一个简单的go程序,您需要:

  • 在$ GOPATH/src下创建目录,例如 mkdir $GOPATH/src/myprogram
  • 将所有源代码(包括供应商目录)放在那里:$GOPATH/src/myprogram/main.go, $GOPATH/src/myprogram/vendor.
  • 运行go install myprogram以构建您的应用程序并将生成的myprogram二进制文件放入$GOPATH/bin/myprogram