通过导入父目录,用golang导入子包? [英] import subpackages with golang, by importing parent dir?

查看:531
本文介绍了通过导入父目录,用golang导入子包?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这个main.go文件:

I have this main.go file:

package main

import "one/entities/bar"

func main(){

}

我有这个目录结构:

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

When I build my project with:

go install main

我收到此编译错误:

src/main/main.go:3:8:没有Go文件 /home/oleg/codes/oresoftware/oredoc/test/builds/go/src/one/entities/bar

src/main/main.go:3:8: no Go files in /home/oleg/codes/oresoftware/oredoc/test/builds/go/src/one/entities/bar

该错误是有道理的.有什么方法可以从one/entities/bar目录中导入所有子包?

that error makes sense. Is there some way to import all the subpackages from within the one/entities/bar directory?

类似这样的东西:

package main

import bar "one/entities/bar/*"

func main(){

}

(使用某种*语法并在bar名称空间中导入所有子包).

(using some sort of * syntax and importing all subpackages in the bar namespace).

最终,我正在尝试执行以下操作:

package main

import (
    "log"
    "one/entities/bar"
)

func main(){

    v := bar.Get.Basic.Req.Headers{}
    log.Fatal(v)

}

推荐答案

根据

You can't do such thing, according to the specs of 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 import syntax requires a package name or path of a package. So no wildcard import.

此声明将阐明原因;

The PackageName is used in qualified identifiers to access exported 
identifiers of the package within the importing source file.

您必须指定要引用的元素在哪个包中存在.例如bar.Get.Basic.Req.Headers.如果没有显式导入,则无法确定.

You must specify in which package the element you are referring to exists. e.g, bar.Get.Basic.Req.Headers. This can't be determined without an explicit import.

这篇关于通过导入父目录,用golang导入子包?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆