为什么“进行构建”找不到软件包?

lia*_*ggo 5 package go

我安装了一个test0软件包$gopath\pkg\windows_386\hello\test0.a,但是当我构建一个依赖于该test0软件包的主软件包时,编译器会说:import "hello/test0": cannot find package

为什么会这样?

我有两个文件:

$gopath/src/hello.go

package main

import (
    "fmt"
    "hello/test0"
)

func main() {
    fmt.Println(test0.Number)
}
Run Code Online (Sandbox Code Playgroud)

$gopath/src/hello/test0/test0.go

package test0

const (
    Number int = 255
)
Run Code Online (Sandbox Code Playgroud)

首先,我运行go install hello/test0,它生成了$gopath\pkg\windows_386\hello\test0.a

然后,我删除目录 $gopath/src/hello

终于,我运行了go build hello.go,编译器说hello.go:5:2: import "hello/test0": cannot find package

Den*_*ret 3

目前看来通常不可能: https: //code.google.com/p/go/issues/detail ?id=2775

也许适合 Go1.1

Dave 的一个技巧(我没有测试):

对于名为“hello”的包,go 工具将在 $GOPATH/src/hello 中查找 .go 源,并且仅当 .a 文件的时间戳早于 .go 文件的最新时间戳时才重建。欺骗它只接受 .a 文件的一个简单方法是在正确的 src 目录中放置一个虚拟 .go 文件,并将其时间戳设置为 .a 文件之前的时间戳。

(这是社区的答案,使用golang-nuts 上的内容)。