Create Custom Packages
Create new folder named mypackages. In this folder, create new packages as below:
Package 1
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"
}
Package 2
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
}
Geometry Package
In mypackages folder, create new folder named geometry. In this folder, create new packages as below:
Circle Package
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
}
Rectangle Package
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
}
Application
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))
}
Structure of Project
Output
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