package code.google.com/p/go.example/hello:exec:"hg":%PATH%中找不到可执行文件.如何获得远程golang包?

Gre*_*een 10 go

我写的是Golang教程http://golang.org/doc/code.html#remote

我的环境设置:

C:\sbox\go\example>set go
    GOPATH=C:\sbox\go\example
    GOROOT=C:\Go
Run Code Online (Sandbox Code Playgroud)

example/文件夹只有src/文件夹:

C:\sbox\go\example\
             |
             --src\
Run Code Online (Sandbox Code Playgroud)

现在我go get按照描述调用并得到一个错误:

C:\sbox\go\example>go get code.google.com/p/go.example/hello
# cd .; hg clone -U https://code.google.com/p/go.example C:\sbox\go\example\src\code.google.com\p\go.example
package code.google.com/p/go.example/hello: exec: "hg": executable file not found in %PATH%
Run Code Online (Sandbox Code Playgroud)

go get但是,在调用之后,我的example/文件夹就像这样:

C:\sbox\go\example\
             |
             --src\
                |
                code.google.com\
                       |
                       --p\
Run Code Online (Sandbox Code Playgroud)

就这样.没有安装更多.

然后我在我的目录结构中添加一个代码,它变成这样:

C:\sbox\go\example\
             |
             --src\
                |
                ---code.google.com\
                |        |
                |        --p\
                |
                ---github.com\
                       |
                       --user\
                           |
                           --hello\
                           |   |
                           |   --hello.go
                           |
                           --newmath\
                                |
                                --sqrt.go
Run Code Online (Sandbox Code Playgroud)

hello.go 是这样的:

package main

import (
    "fmt"
    "github.com/user/newmath"
    //"code.google.com/p/go.example/newmath"
)

func main() {
    fmt.Printf("Hello, world.  Sqrt(2) = %v\n", newmath.Sqrt(2))
}
Run Code Online (Sandbox Code Playgroud)

sqrt.go 是这样的:

// Package newmath is a trivial example package.
package newmath

// Sqrt returns an approximation to the square root of x.
func Sqrt(x float64) float64 {
    z := 0.0
    for i := 0; i < 1000; i++ {
        z -= (z*z - x) / (2 * x)
    }
    return z
}
Run Code Online (Sandbox Code Playgroud)

我只是应对/粘贴它们.全部如教程中所述.然后我做go install并运行该项目.一切正常:

C:\sbox\go\example\src\github.com\user\hello>go install

C:\sbox\go\example\bin>hello
Hello, world.  Sqrt(2) = 1.414213562373095
Run Code Online (Sandbox Code Playgroud)

现在我再次运行go get并得到同样的错误:

C:\sbox\go\example>go get code.google.com/p/go.example/hello
# cd .; hg clone -U https://code.google.com/p/go.example C:\sbox\go\example\src\code.google.com\p\go.example
package code.google.com/p/go.example/hello: exec: "hg": executable file not found in %PATH%
Run Code Online (Sandbox Code Playgroud)

好的,我将bin/目录添加到PATH并go get再次运行,但得到相同的错误:

C:\sbox\go\example>set PATH=%PATH%;C:\sbox\go\example\bin

C:\sbox\go\example>go get code.google.com/p/go.example/hello
# cd .; hg clone -U https://code.google.com/p/go.example C:\sbox\go\example\src\code.google.com\p\go.example
package code.google.com/p/go.example/hello: exec: "hg": executable file not found in %PATH%
Run Code Online (Sandbox Code Playgroud)

我需要做什么才能获得教程中描述的结果 - 安装了远程包,我可以使用它们吗?

mna*_*mna 18

您尝试安装的软件包位于Mercurial(hg)源代码管理系统下.您需要安装Mercurial才能克隆软件包.