Bird
Raised Fist0
Goprogramming~10 mins

Function declaration in Go - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Function declaration
Start
↓
Write func keyword
↓
Name the function
↓
Add parentheses ()
↓
Add parameters (optional)
↓
Add return type (optional)
↓
Write function body { }
↓
Function declared
↓
Call function to use it
This flow shows how to write a function in Go: start with 'func', name it, add parameters and return type if needed, then write the body inside braces.
Execution Sample
Go
func greet(name string) string {
    return "Hello, " + name
}
This code declares a function named greet that takes a name and returns a greeting string.
Execution Table
StepActionCode PartResult
1Start function declarationfunc greet(name string) string {Function named greet starts, takes one string parameter, returns string
2Return greeting stringreturn "Hello, " + nameReturns concatenated string 'Hello, ' + name
3End function body}Function declaration ends
4Call function with argument 'Alice'greet("Alice")Returns 'Hello, Alice'
5Call function with argument 'Bob'greet("Bob")Returns 'Hello, Bob'
💡 Function declaration ends after closing brace; calls return greeting strings.
Variable Tracker
VariableStartAfter greet("Alice")After greet("Bob")
nameundefined"Alice""Bob"
return valueundefined"Hello, Alice""Hello, Bob"
Key Moments - 3 Insights
Why do we write parentheses () even if there are no parameters?
Parentheses show this is a function. Even if empty, they are required syntax to declare or call a function, as seen in step 1 of execution_table.
What does the return type after parentheses mean?
It tells what type the function will give back. Here, 'string' means greet returns a text, shown in step 1 and step 2 of execution_table.
Why do we use curly braces { } after the function declaration?
Curly braces contain the code the function runs. The function body starts after '{' and ends at '}', as shown in steps 1 and 3.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the return value when greet is called with "Alice"?
A"Alice"
B"Hello, Bob"
C"Hello, Alice"
DNo return value
💡 Hint
Check step 4 in the execution_table where greet("Alice") is called.
At which step does the function declaration end?
AStep 1
BStep 3
CStep 2
DStep 4
💡 Hint
Look for the closing brace '}' in the execution_table.
If we remove the return type 'string' from the function declaration, what happens?
ACode will not compile
BFunction returns nothing (void)
CFunction returns an int by default
DFunction returns a string anyway
💡 Hint
In Go, the return type is required if the function returns a value; see step 1 in execution_table.
Concept Snapshot
func functionName(parameters) returnType {
    // code to run
}

- 'func' starts the declaration
- Parameters go inside ()
- Return type after () if function returns a value
- Body inside { } with code
- Call function by name with arguments
Full Transcript
This visual shows how to declare a function in Go. First, write 'func' then the function name. Next, add parentheses with parameters if needed. After parentheses, add the return type if the function returns a value. Then write the function body inside curly braces. The example function greet takes a string name and returns a greeting string. The execution table shows each step: starting declaration, returning a value, ending declaration, and calling the function with different names. Variables track the input name and the returned greeting. Key moments explain why parentheses and return types are needed and why curly braces are used. The quiz tests understanding of return values, function end, and syntax rules. This helps beginners see how a Go function is built and used step-by-step.

Practice

(1/5)
1. What keyword is used to declare a function in Go?
easy
A. func
B. function
C. def
D. fun

Solution

  1. Step 1: Recall Go function syntax

    In Go, functions are declared using the keyword func.
  2. Step 2: Compare options

    Only func uses func, which is correct for Go.
  3. Final Answer:

    func -> Option A
  4. 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

  1. Step 1: Understand Go function parameter syntax

    In Go, parameters are declared as name type. So a int, b int is correct.
  2. 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.
  3. Final Answer:

    func add(a int, b int) int {} -> Option D
  4. 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

  1. Step 1: Understand function call and return

    The function multiply takes two integers and returns their product.
  2. Step 2: Calculate multiply(3, 4)

    3 * 4 = 12, so the function returns 12, which is printed.
  3. Final Answer:

    12 -> Option A
  4. 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

  1. Step 1: Check function syntax

    The function starts with func, has parameter and return type correctly.
  2. Step 2: Look for missing parts

    The function body is missing the closing brace } to end the function.
  3. Final Answer:

    Missing closing brace '}' -> Option C
  4. 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

  1. 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.
  2. 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.
  3. 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
  4. 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 unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard