cat test.go
package main
import "builtin"
func main() {
return
}
go run test.go
can't find import: "builtin"
我很好奇,因为该文件存在且已正确打包。但是不能像其他软件包一样导入。
/usr/local/go/src/pkg/builtin/builtin.go
最佳答案
导入软件包时,编译器(或至少是gc编译器)将搜索已编译的软件包。
您可以在源代码中看到此代码:http://golang.org/src/cmd/gc/lex.c?#L578
特别是,它不会搜索.go文件:假定这些文件已经生成。与C++相比,这是一个很大的胜利,因为每个软件包都可以编译一次,并且依赖于它的代码可以使用已经编译的版本。
那么,为什么即使内置了“buildin”,它也没有被构建呢?好吧,这是特殊情况,在构建源文件之前先构建依赖关系的代码部分将被忽略:http://golang.org/src/cmd/go/build.go?#L558