我有这个main.go文件:
package main
import "one/entities/bar"
func main(){
}
我有这个目录结构:
当我使用以下项目构建项目时:
go install main
我收到此编译错误:
src / main / main.go:3:8:没有Go文件 / home / oleg / codes / oresoftware / oredoc / test / builds / go / src / one / entities / bar
该错误是有道理的。有什么方法可以从one/entities/bar
目录中导入所有子包?
类似这样的东西:
package main
import bar "one/entities/bar/*"
func main(){
}
(使用某种*语法并在bar名称空间中导入所有子包)。
最终,我正在尝试执行以下操作:
package main
import (
"log"
"one/entities/bar"
)
func main(){
v := bar.Get.Basic.Req.Headers{}
log.Fatal(v)
}
答案 0 :(得分:1)
根据import
的{{3}},您不能这样做:
The import names an identifier (PackageName) to be used for access and an
ImportPath that specifies the package to be imported.
ImportDecl = "import" ( ImportSpec | "(" { ImportSpec ";" } ")" ) .
ImportSpec = [ "." | PackageName ] ImportPath .
ImportPath = string_lit .
导入语法需要包名称或包路径。因此,没有通配符导入。
此声明将阐明原因;
The PackageName is used in qualified identifiers to access exported
identifiers of the package within the importing source file.
您必须指定所指元素在哪个包中存在。例如bar.Get.Basic.Req.Headers
。如果没有显式导入,则无法确定。