What if you could fix a bug once and have it fixed everywhere instantly?
Creating custom packages in Go - Why You Should Know This
Imagine you are building a big Go program and you write all your code in one huge file. Every time you want to reuse some code, you have to copy and paste it everywhere.
This manual way is slow and confusing. If you find a mistake, you must fix it in many places. It's easy to lose track and make errors. Your code becomes messy and hard to understand.
Creating custom packages lets you group related code in one place. You write it once, then import and use it anywhere. This keeps your code clean, organized, and easy to maintain.
func Add(a int, b int) int {
return a + b
}
// Copy this function everywhere you need itpackage mathutils
func Add(a int, b int) int {
return a + b
}
// Import mathutils and call mathutils.Add() anywhereIt enables you to build bigger programs by reusing code easily and keeping everything neat and manageable.
Think of a toolbox where you keep all your tools in one box. Instead of carrying each tool separately, you grab the box and have everything ready. Custom packages are like that toolbox for your code.
Manual code reuse by copying is slow and error-prone.
Custom packages let you write code once and reuse it everywhere.
This keeps your Go programs organized, clean, and easier to maintain.
Practice
Solution
Step 1: Understand the role of packages
Packages help group related code together for reuse and clarity.Step 2: Identify the main benefit
Custom packages allow you to reuse code in different parts of your program or in other programs.Final Answer:
To organize code into reusable parts -> Option AQuick Check:
Custom packages = reusable code [OK]
- Thinking packages speed up code execution
- Believing packages remove the need for functions
- Assuming packages eliminate imports
Solution
Step 1: Recall Go export rules
In Go, only names starting with an uppercase letter are exported (visible outside the package).Step 2: Check function names
Only 'MyFunction' starts with uppercase, so it is exported.Final Answer:
func MyFunction() {} -> Option AQuick Check:
Uppercase start = exported function [OK]
- Using lowercase to export functions
- Using underscores to export
- Assuming snake_case exports functions
mathutil with an exported function Square, what is the output of this code?package main
import (
"fmt"
"mathutil"
)
func main() {
fmt.Println(mathutil.Square(4))
}Solution
Step 1: Understand the function call
The code calls mathutil.Square(4), which should return 4 squared (4*4).Step 2: Calculate the expected output
4 multiplied by 4 equals 16, so the output is 16.Final Answer:
16 -> Option BQuick Check:
Square(4) = 16 [OK]
- Assuming function name prints as string
- Thinking import fails without path
- Expecting zero as default output
package main
import (
"fmt"
"mypkg"
)
func main() {
fmt.Println(mypkg.helper())
}Assuming
helper is a function in mypkg.Solution
Step 1: Check function visibility rules
In Go, only functions starting with uppercase letters are exported and accessible outside their package.Step 2: Identify the function name issue
The function is named 'helper' (lowercase), so it is not accessible from main package.Final Answer:
Function name should start with uppercase to be accessible -> Option DQuick Check:
Lowercase function = not exported [OK]
- Thinking package name must be Main
- Believing import path must be URL
- Assuming fmt.Println can't print function output
stringutil with a function Reverse that reverses a string. Which of the following is the correct way to define and use it in your main.go?Solution
Step 1: Define exported function in package
The function must start with uppercase 'Reverse' to be accessible outside the package.Step 2: Import package and call function with package name
In main.go, import "stringutil" and call the function as stringutil.Reverse("hello").Final Answer:
Define func Reverse and call stringutil.Reverse("hello") after import -> Option CQuick Check:
Uppercase function + import + package prefix = correct usage [OK]
- Using lowercase function name and expecting export
- Calling function without package prefix after import
- Not importing the custom package
Ready to prove it?
Pass the test and this pattern moves unknown
