使用vgo build
这是一个“Hello, World”使用的演练vgo
,包括常见错误以及如何响应它们。
$ go get -u golang.org/x/vgo
$ cd /tmp/hello # Outside of GOPATH.
$ cat main.go
package main
import "fmt"
func main() {
fmt.Println("Hello, World")
}
$ vgo build
cannot determine module root; please create a go.mod file there
这个错误告诉我们需要指定 vgo 模块的根目录是什么。模块是一起版本化的包(可能是一个)的集合。创建一个空go.mod
文件以表示这是模块根目录:
$ touch go.mod
再次尝试构建:$ vgo build
.
vgo: cannot determine module path for source directory
/tmp/hello (outside GOPATH, no import comments)
这个错误告诉我们 vgo 不知道我们包的导入路径。有两种方法可以告诉它:
- 将
module
语句添加到go.mod
.
import
为我们的包裹添加评论。
我们现在将使用选项 2 并返回选项 1。将第一行更改main.go
为:
package main // import "my/import/path/hello"
$ vgo build
最后一次。
运行二进制文件:$ ./hello
Hello, World
注意:go.mod
现在包含module
一行(上面的选项 1):
$ cat go.mod
module my/import/path/hello
如果您在您的内部GOPATH
,则不应出现第 5 步中的错误 -vgo build
应该会自动确定您在您的内部GOPATH
并相应地添加该module
行。
使用vgo run
(不使用vgo build
)
对于这个例子,让我们使用hello.go
来自A Tour of Versioned Go (vgo):
$ go get -u golang.org/x/vgo
$ mkdir /tmp/hello2
$ curl -sS https://swtch.com/hello.go >hello.go
$ vgo run hello.go
cannot determine module root; please create a go.mod file there
$ touch go.mod
$ vgo run hello.go
vgo: resolving import "rsc.io/quote"
vgo: finding rsc.io/quote (latest)
vgo: adding rsc.io/quote v1.5.2
Hello, world.