Main and init function
In Go, both the main function and the init function play important roles in the execution of a program. They serve different purposes and are executed at different stages of the program’s lifecycle.
mainFunction:- The
mainfunction is the entry point of a Go program. It is mandatory for every executable program in Go. - When you run a Go executable, the program starts executing from the
mainfunction. - The
mainfunction does not take any arguments and does not return any value.
- The
Example of a main function:
package main
import "fmt"
func main() {
fmt.Println("Hello, Go!")
}initFunction:- The
initfunction is a special function that is automatically executed before themainfunction. - Each package can have multiple
initfunctions, and they are executed in the order in which they are imported. - The
initfunction is often used for package-level initialization, such as setting up global variables, configuring resources, or performing setup tasks.
- The
Example of an init function:
package main
import "fmt"
func init() {
fmt.Println("Initializing the program...")
}
func main() {
fmt.Println("Hello, Go!")
}In this example, the init function is executed before the main function, and it prints a message indicating the initialization process.
Both the main and init functions are essential components of Go programs. The init function provides a way to perform package-level setup tasks, and the main function serves as the starting point of execution for the program.
Here’s another example that demonstrates the use of both the init and main functions:
package main
import (
"fmt"
"math/rand"
"time"
)
func init() {
rand.Seed(time.Now().UnixNano())
fmt.Println("Initializing random number generator...")
}
func main() {
randomNumber := generateRandomNumber()
fmt.Println("Random Number:", randomNumber)
}
func generateRandomNumber() int {
return rand.Intn(100)
}In this example, we’re using the init function to initialize the random number generator from the math/rand package. This ensures that the random numbers generated are truly random by seeding the generator with the current time’s Unix nanoseconds.
The main function then calls the generateRandomNumber function to get a random number between 0 and 99 and prints it.
Remember that the init function is executed before the main function, and it’s a good place to put package-level setup and initialization tasks, as shown in this example.






