I have two files main.go
which is under package main
, and another file with some functions in the package called functions.
My question is:
Export function getValue by making 1st character of function name capital, GetValue
You import the package by its import path, and reference all its exported symbols (those starting with a capital letter) through the package name, like so:
import "MyProj/functions"
functions.GetValue()
you can write
import(
functions "./functions"
)
func main(){
c:= functions.getValue() <-
}
If you write in gopath
write this import functions "MyProj/functions"
or if you are working with Docker
You should prefix your import in main.go
with: MyProj
, because, the directory the code resides in is a package name by default in Go whether you're calling it main
or not. It will be named as MyProj
.
package main
just denotes that this file has an executable command which contains func main()
. Then, you can run this code as: go run main.go
. See here for more info.
You should rename your func getValue()
in functions
package to func GetValue()
, because, only that way the func will be visible to other packages. See here for more info.
File 1: main.go (located in MyProj/main.go)
package main
import (
"fmt"
"MyProj/functions"
)
func main(){
fmt.Println(functions.GetValue())
}
File 2: functions.go (located in MyProj/functions/functions.go)
package functions
// `getValue` should be `GetValue` to be exposed to other packages.
// It should start with a capital letter.
func GetValue() string{
return "Hello from this another package"
}
In Go packages, all identifiers will be exported to other packages if the first letter of the identifier name starts with an uppercase letter.
=> change getValue() to GetValue()