Create Custom Package in Golang

Create new folder named mypackages. In this folder, create new packages as below:

In mypackages folder, create new folder named package1. In this folder, create new file named package1.go as below:

package package1

import "fmt"

func init() {
    fmt.Println("This is my lib")
}

func Hello() string {
    return "Hello Lib 1"
}

In mypackages folder, create new folder named package2. In this folder, create new file named package2.go as below:

package package2

func Add(a, b int) int {
	return a + b
}

func Sub(a, b int) int {
	return a - b
}




In mypackages folder, create new folder named geometry. In this folder, create new packages as below:

In geometry folder, create new folder named circle. In this folder, create new file named circle.go as below:

package circle

import "math"

func Area(r float64) float64 {
	return math.Pi * r * r
}

func Perimeter(r float64) float64 {
	return math.Pi * 2 * r
}

In geometry folder, create new folder named rectangle. In this folder, create new file named rectangle.go as below:

package rectangle

func Area(len, wid float64) float64 {
    area := len * wid
    return area
}

func Perimeter(len, wid float64) float64 {
    return (len + wid) * 2
}

Create new folder named src. In src folder, create new file named main.go as below:

package main

import (
	"fmt"
	"mypackages/geometry/circle"
	"mypackages/geometry/rectangle"
	"mypackages/package1"
	"mypackages/package2"
)

func main() {

	fmt.Println(package1.Hello())
	fmt.Println("Add:", package2.Add(1, 2))
	fmt.Println("Sub:", package2.Sub(10, 4))
	fmt.Println("Circle")
	fmt.Println("\tArea:", circle.Area(10))
	fmt.Println("\tPerimeter:", circle.Perimeter(5))
	fmt.Println("Rectangle")
	fmt.Println("\tArea:", rectangle.Area(4, 6))
	fmt.Println("\tPerimeter:", rectangle.Perimeter(5, 9))

}




Open Terminal windows in Visual Studio Code and run command line: go run main.go

This is my lib
Hello Lib 1
Add: 3
Sub: 6
Circle
        Area: 314.1592653589793
        Perimeter: 31.41592653589793
Rectangle
        Area: 24
        Perimeter: 28