📖 Scenario: You are creating a simple Go program that uses a package with an init function. This function runs automatically when the program starts, before the main function.This helps set up things like configuration or initial messages.
🎯 Goal: Build a Go program with a package that has an init function which prints a welcome message automatically when the program starts.
📋 What You'll Learn
Create a package called greetings with an init function
The init function should print "Welcome to the Greetings package!"
Create a main package that imports greetings
The main function should print "Main function started."
💡 Why This Matters
🌍 Real World
Many Go programs use <code>init</code> functions to prepare configuration, logging, or database connections automatically when the program starts.
💼 Career
Understanding module initialization is important for writing clean, maintainable Go code and working with packages in professional software development.
Progress0 / 4 steps
1
Create the greetings package with an init function
Create a package called greetings. Inside it, write an init function that prints "Welcome to the Greetings package!" using fmt.Println. Import the fmt package.
Go
Hint
The init function has no parameters and no return values. It runs automatically when the package is loaded.
2
Create the main package and import greetings
Create a package called main. Import the greetings package you created earlier. Also import fmt for printing.
Go
Hint
Use parentheses to import multiple packages. The greetings package must be imported to trigger its init function.
3
Add the main function to print a start message
In the main package, write a main function that prints "Main function started." using fmt.Println.
Go
Hint
The main function is the program's entry point. Use fmt.Println to print the message.
4
Run the program and observe the output
Run the Go program. It should first print "Welcome to the Greetings package!" from the init function, then "Main function started." from the main function. Write a print statement to display the output of the program.
Go
Hint
When you run the program, the init function runs before main. The output shows both messages in order.
Practice
(1/5)
1. What is the main purpose of the init function in a Go module?
easy
A. To run setup code automatically before main starts
B. To define the main entry point of the program
C. To declare global variables
D. To handle user input during runtime
Solution
Step 1: Understand the role of init in Go
The init function is designed to run automatically before the main function starts.
Step 2: Differentiate from other functions
Unlike main, init is used for setup tasks, not for program entry or input handling.
Final Answer:
To run setup code automatically before main starts -> Option A
Quick Check:
init runs before main [OK]
Hint: Remember: init runs before main automatically [OK]
Common Mistakes:
Confusing init with main
Thinking init handles user input
Assuming init must be called manually
2. Which of the following is the correct syntax to declare an init function in Go?
easy
A. init func() {}
B. func init() {}
C. function init() {}
D. func Init() {}
Solution
Step 1: Recall Go function syntax
In Go, functions start with the keyword func, followed by the function name and parentheses.
Step 2: Check init function naming rules
The init function must be lowercase and have no parameters or return values.
Final Answer:
func init() {} -> Option B
Quick Check:
Correct init syntax = func init() {} [OK]
Hint: Use lowercase init with empty parentheses [OK]
The code uses fmt.Println but does not import the fmt package, causing a compile error.
Step 2: Validate other code parts
init can print output, multiple init are optional, and main must be lowercase.
Final Answer:
Missing import of the fmt package -> Option D
Quick Check:
Use import "fmt" to fix [OK]
Hint: Always import packages before using their functions [OK]
Common Mistakes:
Forgetting to import fmt
Thinking init cannot print
Misnaming main function
5. You want to initialize a configuration map before your Go program runs. Which approach correctly uses init to do this?
var config map[string]string
func init() {
// What should go here?
}
hard
A. config = make(map[string]string)
config["env"] = "production"
B. config := map[string]string{"env": "production"}
C. var config = map[string]string{"env": "production"}
D. config = nil
Solution
Step 1: Understand map initialization in init
The global config variable must be assigned a new map using make before adding keys.
Step 2: Check each option
config = make(map[string]string)
config["env"] = "production" correctly initializes and sets a key. config := map[string]string{"env": "production"} uses := which creates a new local variable, not affecting the global. var config = map[string]string{"env": "production"} declares a local config inside init, not affecting the global. config = nil sets config to nil, which is not useful.
Final Answer:
config = make(map[string]string)
config["env"] = "production" -> Option A
Quick Check:
Use make to initialize maps before use [OK]
Hint: Use make to initialize maps before adding keys [OK]
Common Mistakes:
Using := inside init creates local variable
Not initializing map before assignment
Setting map to nil instead of a new map
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.