Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to access a struct from an external package in Go

Tags:

import

struct

go

I'm trying to import a struct from another package in the following file:

// main.go
import "path/to/models/product"    
product = Product{Name: "Shoes"}

// models/product.go
type Product struct{
 Name string
}

But in the main.go file the struct Product is undefined. How do I import the struct?

like image 747
Colleen Larsen Avatar asked Feb 07 '23 01:02

Colleen Larsen


1 Answers

In Go you import "complete" packages, not functions or types from packages.
(See this related question for more details: What's C++'s `using` equivalent in golang)

See Spec: Import declarations for syntax and deeper explanation of the import keyword and import declarations.

Once you import a package, you may refer to its exported identifiers with qualified identifiers which has the form: packageName.Identifier.

So your example could look like this:

import "path/to/models/product"
import "fmt"

func main() {
    p := product.Product{Name: "Shoes"}
    // Use product, e.g. print it:
    fmt.Println(p) // This requires `import "fmt"`
}
like image 115
icza Avatar answered Feb 08 '23 14:02

icza