2

I have this main.go file:

package main

import "one/entities/bar"

func main(){

}

I have this dir structure:

enter image description here

When I build my project with:

go install main

I get this compilation error:

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

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

Something like this:

package main

import bar "one/entities/bar/*"

func main(){

}

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

Ultimately I am trying do something like this:

package main

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

func main(){

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

}
2
  • Import statements imports a package. As long as the code inside the directory is of the same package, it is imported. You then can access it by packagename.<func/var>. Why would you subdivide single package to many? Is it necessary? Commented Nov 17, 2018 at 22:16
  • @ChenA. yeah in the bar folder, I am going to have to generate a type alias that points to each branch in the folder tree, it sux, but what I have do I guess. Commented Nov 17, 2018 at 22:17

1 Answer 1

1

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.

This statement will clarify the why;

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

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.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.