Bird
Raised Fist0
Goprogramming~5 mins

Function declaration in Go - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Function declaration
O(n)
Understanding Time Complexity

When we declare a function, we want to know how its execution time changes as we use it with different inputs.

Here, we ask: does just declaring a function affect how long the program runs?

Scenario Under Consideration

Analyze the time complexity of the following code snippet.


func greet(name string) string {
    return "Hello, " + name
}

func main() {
    message := greet("Alice")
    println(message)
}
    

This code declares a simple function that returns a greeting message and then calls it once.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: A single function call with string concatenation.
  • How many times: The function is called once; no loops or recursion.
How Execution Grows With Input

Execution time grows very little because the function runs once and does a simple string join.

Input Size (n)Approx. Operations
10About 1 call with small string work
100Still 1 call, slightly more string work
1000Still 1 call, more string joining but no loops

Pattern observation: The time depends on the size of the input string but the function runs only once, so growth is very small.

Final Time Complexity

Time Complexity: O(n)

This means the time grows linearly with the length of the input string, but only because of string joining, not because of repeated calls.

Common Mistake

[X] Wrong: "Declaring a function makes the program slower as input grows."

[OK] Correct: Declaring a function itself does not run code or slow the program; only calling it does, and how often it runs matters more.

Interview Connect

Understanding that function declaration alone does not affect time helps you focus on what really matters: how many times and how the function runs.

Self-Check

"What if the function greet was called inside a loop running n times? How would the time complexity change?"

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