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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句