Go – How to Create a Package in Go Language



This blog represents code samples and related concepts on how to create a package or library using GO programming language.

Create a HelloWorld Package

Save the following code within some file such as hello.go within some package folder such as helloworld within folder $GOPATH/src. Create the package using command such as go install helloworld. Alternatively, go inside the folder helloworld and execute the command, go install. This would lead to creation of *.a file within $GOPATH/pkg folder. Note that command such as go build can be used to compile and check if there are any errors.

package helloworld

func PrintHello(name string) string {
    helloWorldMessage := "Hello " + name + ", How are you doing today?"
    return helloWorldMessage
}

Pay attention to some of the following:

  • The methods to be exported MUST start with capital letters. Otherwise, trying to use the method would print the error message such as “cannot refer to unexported name”
  • Package folder name, file name and actual package name can all be different. The package *.a is created based on package folder name. However, the API or method needs to be called on the name used with package when defining the package in the GO program.

Create Another Package which uses HelloWorld Package

package main

import (
        "fmt"
        "helloworld"
)

func main() {
        fmt.Printf("---- Program to Demonstrate HelloWorld Package ----\n")
        helloMessage := helloworld.PrintHello("Ajitesh Shukla")
        fmt.Printf(helloMessage + "\n")
}

Save the above within another package (folder), say, hello with a fole such as hello.go. Install the package using command such as go install. This would create an executable with name such as hello within $GOPATH/bin folder. Execute the program using command such as $GOPATH/bin/hello. In case, you have set the $GOPATH/bin in PATH variable, execute the program by typing hello.



Ajitesh Kumar
Follow me

Ajitesh Kumar

I have been recently working in the area of Data Science and Machine Learning / Deep Learning. In addition, I am also passionate about various different technologies including programming languages such as Java/JEE, Javascript, Python, R, Julia etc and technologies such as Blockchain, mobile computing, cloud-native technologies, application security, cloud computing platforms, big data etc. I would love to connect with you on Linkedin.
Posted in Go. Tagged with .

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload the CAPTCHA.