импортировать подпакеты с golang, импортируя родительский каталог? - PullRequest
0 голосов
/ 18 ноября 2018

У меня есть файл 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 / entity / bar

эта ошибка имеет смысл.Есть ли какой-нибудь способ импортировать все подпакеты из каталога one/entities/bar?

Примерно так:

package main

import bar "one/entities/bar/*"

func main(){

}

(используя некоторый синтаксис * и импортировать все подпакеты в панелиnamespace).

В конечном итоге я пытаюсь сделать что-то вроде этого:

package main

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

func main(){

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

}

1 Ответ

0 голосов
/ 18 ноября 2018

Вы не можете делать такие вещи, согласно спецификациям из 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. Это нельзя определить без явного импорта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...