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

时间:2018-11-17 22:01:57

标签: go

我有这个main.go文件:

package main

import "one/entities/bar"

func main(){

}

我有这个目录结构:

enter image description here

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

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)

}

1 个答案:

答案 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。如果没有显式导入,则无法确定。