Functions help you organize your code into small, reusable pieces. They make your program easier to read and use.
When you want to repeat a task multiple times without rewriting code.
When you want to break a big problem into smaller, manageable parts.
When you want to give a name to a set of instructions for clarity.
When you want to reuse code in different parts of your program.
When you want to test parts of your program separately.
Syntax
Go
func functionName(parameters) returnType {
// code to run
}
func starts the function declaration.
Parameters are optional; return type is also optional if the function returns nothing.
Examples
A simple function with no parameters and no return value.
Go
func greet() {
fmt.Println("Hello!")
}
A function that takes two numbers and returns their sum.
Go
func add(a int, b int) int {
return a + b
}
Parameters can share the same type if they are the same.
Go
func multiply(x, y int) int {
return x * y
}
Sample Program
This program declares two functions: greet prints a message, and add returns the sum of two numbers. The main function calls both.
Go
package main
import"fmt"
func greet() {
fmt.Println("Hello, friend!")
}
func add(a int, b int) int {
return a + b
}
func main() {
greet()
sum := add(3, 4)
fmt.Println("Sum is", sum)
}
OutputSuccess
Important Notes
Function names should start with a letter and use camelCase style.
Functions can return multiple values in Go, but here we show a simple single return.
Use func keyword to declare functions.
Summary
Functions group code to do one job.
Use func keyword to declare them.
Functions can have parameters and return values.
Practice
(1/5)
1. What keyword is used to declare a function in Go?
easy
A. func
B. function
C. def
D. fun
Solution
Step 1: Recall Go function syntax
In Go, functions are declared using the keyword func.
Step 2: Compare options
Only func uses func, which is correct for Go.
Final Answer:
func -> Option A
Quick Check:
Function declaration keyword = func [OK]
Hint: Remember: Go uses 'func' to start a function [OK]
Common Mistakes:
Using 'function' like JavaScript
Using 'def' like Python
Using 'fun' which is invalid
2. Which of the following is the correct syntax to declare a function named add that takes two integers and returns an integer?
easy
A. function add(a int, b int) int {}
B. func add(int a, int b) int {}
C. func add(a, b int) {}
D. func add(a int, b int) int {}
Solution
Step 1: Understand Go function parameter syntax
In Go, parameters are declared as name type. So a int, b int is correct.
Step 2: Check return type and function keyword
Function must start with func and specify return type int. func add(a int, b int) int {} matches this exactly.
Final Answer:
func add(a int, b int) int {} -> Option D
Quick Check:
Parameter syntax = name type [OK]
Hint: Parameters: name then type, return type after parentheses [OK]
Common Mistakes:
Putting type before name in parameters
Using 'function' keyword instead of 'func'
Omitting return type when needed
3. What will be the output of this Go program?
package main
import "fmt"
func multiply(x int, y int) int {
return x * y
}
func main() {
fmt.Println(multiply(3, 4))
}
medium
A. 12
B. 7
C. 34
D. Error
Solution
Step 1: Understand function call and return
The function multiply takes two integers and returns their product.
Step 2: Calculate multiply(3, 4)
3 * 4 = 12, so the function returns 12, which is printed.
Final Answer:
12 -> Option A
Quick Check:
3 times 4 = 12 [OK]
Hint: Multiply parameters and print result [OK]
Common Mistakes:
Adding instead of multiplying
Concatenating numbers as strings
Expecting syntax error due to function
4. Identify the error in this Go function declaration:
func greet(name string) string {
return "Hello, " + name
medium
A. Incorrect function keyword
B. Wrong parameter type
C. Missing closing brace '}'
D. Missing return type
Solution
Step 1: Check function syntax
The function starts with func, has parameter and return type correctly.
Step 2: Look for missing parts
The function body is missing the closing brace } to end the function.
Final Answer:
Missing closing brace '}' -> Option C
Quick Check:
Every function must end with '}' [OK]
Hint: Count opening and closing braces carefully [OK]
Common Mistakes:
Forgetting to close function body with '}'
Confusing parameter types
Omitting return type
5. How would you declare a Go function named filterEven that takes a slice of integers and returns a new slice containing only even numbers?
hard
A. func filterEven(nums int) int {
var evens int
for _, n := range nums {
if n%2 == 0 {
evens += n
}
}
return evens
}
B. func filterEven(nums []int) []int {
var evens []int
for _, n := range nums {
if n%2 == 0 {
evens = append(evens, n)
}
}
return evens
}
C. func filterEven(nums []int) {
for _, n := range nums {
if n%2 == 0 {
fmt.Println(n)
}
}
}
D. func filterEven(nums []int) []int {
for n := range nums {
if n%2 == 0 {
return nums
}
}
return nil
}
Solution
Step 1: Check parameter and return types
The function must take a slice of integers []int and return a slice of integers []int. func filterEven(nums []int) []int {
var evens []int
for _, n := range nums {
if n%2 == 0 {
evens = append(evens, n)
}
}
return evens
} matches this.
Step 2: Verify logic to filter even numbers
func filterEven(nums []int) []int {
var evens []int
for _, n := range nums {
if n%2 == 0 {
evens = append(evens, n)
}
}
return evens
} creates a new slice, loops over input, appends even numbers, and returns the new slice. This is correct.
Final Answer:
func filterEven(nums []int) []int {
var evens []int
for _, n := range nums {
if n%2 == 0 {
evens = append(evens, n)
}
}
return evens
} -> Option B
Quick Check:
Filter slice by appending evens [OK]
Hint: Use slice, loop, append evens, return new slice [OK]
Common Mistakes:
Wrong parameter or return types
Returning inside loop prematurely
Printing instead of returning filtered slice
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.