Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过导入父目录,使用golang导入子包?_Go - Fatal编程技术网

通过导入父目录,使用golang导入子包?

通过导入父目录,使用golang导入子包?,go,Go,我有一个main.go文件: package main import "one/entities/bar" func main(){ } 我有这个目录结构: 当我使用以下工具构建项目时: go install main 我发现这个编译错误: src/main/main.go:3:8:中的禁止进入文件 /home/oleg/codes/oresoftware/oredoc/test/builds/go/src/one/entities/bar 这个错误是有道理的。是否有某种方法可以从o

我有一个main.go文件:

package main

import "one/entities/bar"

func main(){

}
我有这个目录结构:

当我使用以下工具构建项目时:

go install main
我发现这个编译错误:

src/main/main.go:3:8:中的禁止进入文件 /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)

}

根据
import
,您不能做这样的事情:

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.

必须指定引用的元素存在于哪个包中。e、 g,
bar.Get.Basic.Req.Headers
。没有显式导入就无法确定这一点。

import语句导入一个
包。只要目录中的代码属于同一个包,它就会被导入。然后,您可以通过
packagename.
访问它。为什么要将单个包细分为多个包?有必要吗?@ChenA。是的,在bar文件夹中,我必须生成一个类型别名,指向文件夹树中的每个分支,它是sux,但我想我要做的是。