Call a function from another package in Go

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 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"
}

Tags:

Go