一尘不染

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

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中没有Go文件

该错误是有道理的。有什么方法可以从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)

}

阅读 703

收藏
2020-07-02

共1个答案

一尘不染

根据以下规范,您无法执行此操作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.

您必须指定所指元素在哪个包中存在。例如bar.Get.Basic.Req.Headers。没有明确的导入就无法确定。

2020-07-02