Bird
Raised Fist0
Goprogramming~20 mins

Array limitations in Go - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Array Mastery in Go
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of this Go code with arrays?

Consider the following Go program. What will it print?

Go
package main
import "fmt"
func main() {
    var arr [3]int
    fmt.Println(len(arr))
    fmt.Println(cap(arr))
}
A
0
0
B
0
3
C
3
3
D
3
0
Attempts:
2 left
💡 Hint

Remember that arrays in Go have fixed size known at compile time.

❓ Predict Output
intermediate
2:00remaining
What happens if you assign arrays of different sizes?

What error or output results from this Go code?

Go
package main
func main() {
    var a [3]int
    var b [4]int
    a = b
}
Acompile-time error: cannot use b (type [4]int) as type [3]int in assignment
Bruntime panic: array size mismatch
Ccompiles and runs with no output
Dcompiles but runtime error when assigning
Attempts:
2 left
💡 Hint

Arrays of different sizes are different types in Go.

🔧 Debug
advanced
2:00remaining
Why does this Go code cause an error when passing an array to a function?

Identify the problem in this code and what error it causes.

Go
package main
import "fmt"
func modify(arr [3]int) {
    arr[0] = 100
}
func main() {
    a := [3]int{1,2,3}
    modify(a)
    fmt.Println(a)
}
AOutput is [1 2 3] because array is passed by value, so original is unchanged
BOutput is [100 2 3] because array is passed by reference
CCompile-time error: cannot assign to array element
DRuntime panic: index out of range
Attempts:
2 left
💡 Hint

Think about how arrays are passed to functions in Go.

🧠 Conceptual
advanced
1:30remaining
What is a key limitation of arrays in Go compared to slices?

Choose the best description of a limitation of arrays in Go.

AArrays can only hold elements of type int
BArrays have fixed size and cannot be resized after declaration
CArrays automatically grow when elements are appended
DArrays support dynamic memory allocation
Attempts:
2 left
💡 Hint

Think about what happens if you want to add more elements than the array size.

❓ Predict Output
expert
2:30remaining
What is the output of this Go code involving array comparison?

What does this program print?

Go
package main
import "fmt"
func main() {
    a := [3]int{1, 2, 3}
    b := [3]int{1, 2, 3}
    c := [3]int{3, 2, 1}
    fmt.Println(a == b)
    fmt.Println(a == c)
}
A
false
true
B
false
false
C
true
true
D
true
false
Attempts:
2 left
💡 Hint

Arrays in Go can be compared element-wise if they have the same type and size.

Practice

(1/5)
1. Which statement best describes arrays in Go?
easy
A. Arrays can grow dynamically as elements are added.
B. Arrays automatically resize when elements are removed.
C. Arrays have a fixed size that cannot be changed after creation.
D. Arrays are the same as slices in Go.

Solution

  1. Step 1: Understand array size behavior

    In Go, arrays have a fixed size defined when they are created and cannot be resized later.
  2. Step 2: Compare with other options

    Options A and C describe dynamic resizing, which arrays do not support. Arrays are the same as slices in Go. is incorrect because arrays and slices are different types.
  3. Final Answer:

    Arrays have a fixed size that cannot be changed after creation. -> Option C
  4. Quick Check:

    Array size fixed = B [OK]
Hint: Remember: Go arrays have fixed size, slices are flexible [OK]
Common Mistakes:
  • Confusing arrays with slices
  • Thinking arrays can resize dynamically
  • Assuming arrays and slices are identical
2. Which of the following is the correct way to declare an array of 5 integers in Go?
easy
A. var arr [5]int
B. arr := []int{5}
C. var arr []int = make([]int, 5)
D. arr := [int]5

Solution

  1. Step 1: Identify correct array declaration syntax

    In Go, arrays are declared with the size inside square brackets before the type, like [5]int.
  2. Step 2: Analyze other options

    arr := []int{5} declares a slice with one element 5, not an array of size 5. var arr []int = make([]int, 5) declares a slice using make, not an array. arr := [int]5 is invalid syntax.
  3. Final Answer:

    var arr [5]int -> Option A
  4. Quick Check:

    Array syntax = var arr [size]type [OK]
Hint: Array size goes inside brackets before type [OK]
Common Mistakes:
  • Using slice syntax instead of array syntax
  • Placing size after type
  • Using make() for arrays
3. What will be the output of this Go code?
package main
import "fmt"
func main() {
  var arr [3]int
  arr[0] = 10
  arr[1] = 20
  fmt.Println(arr[2])
}
medium
A. 20
B. 10
C. runtime error
D. 0

Solution

  1. Step 1: Understand default array values in Go

    Arrays in Go are initialized with zero values for their type. For int, the default is 0.
  2. Step 2: Check assigned and unassigned elements

    arr[0] and arr[1] are set to 10 and 20. arr[2] is not assigned, so it remains 0.
  3. Final Answer:

    0 -> Option D
  4. Quick Check:

    Unassigned int array element = 0 [OK]
Hint: Unassigned int array elements default to 0 [OK]
Common Mistakes:
  • Expecting unassigned elements to be garbage or error
  • Confusing array with slice behavior
  • Assuming runtime error for out-of-range access
4. What is wrong with this Go code snippet?
var arr [3]int
arr = append(arr, 4)
medium
A. The syntax is correct; no error.
B. Arrays cannot be appended to; append works only with slices.
C. append requires a pointer to the array.
D. The array size is too small for append.

Solution

  1. Step 1: Understand append function usage

    In Go, append is used only with slices, not arrays.
  2. Step 2: Identify error cause

    Trying to append to an array causes a compile-time error because arrays have fixed size and do not support append.
  3. Final Answer:

    Arrays cannot be appended to; append works only with slices. -> Option B
  4. Quick Check:

    append() works only with slices [OK]
Hint: Use slices, not arrays, with append() [OK]
Common Mistakes:
  • Trying to append to arrays
  • Assuming append resizes arrays
  • Ignoring compile-time errors
5. You need a collection that can grow and shrink dynamically in Go. Which approach correctly solves this limitation of arrays?
hard
A. Use slices instead of arrays for flexible size.
B. Declare a very large array to hold all possible elements.
C. Manually copy array elements to a new larger array when needed.
D. Use a map with integer keys instead of an array.

Solution

  1. Step 1: Identify the limitation of arrays

    Arrays have fixed size and cannot grow or shrink dynamically.
  2. Step 2: Choose the flexible collection type

    Slices in Go provide dynamic resizing and are the recommended way to handle flexible collections.
  3. Step 3: Evaluate other options

    Declare a very large array to hold all possible elements. wastes memory and is inflexible. Manually copy array elements to a new larger array when needed. is manual and error-prone. Use a map with integer keys instead of an array. changes data structure but not necessarily size flexibility.
  4. Final Answer:

    Use slices instead of arrays for flexible size. -> Option A
  5. Quick Check:

    Dynamic size needs slices = A [OK]
Hint: Slices provide dynamic size, arrays do not [OK]
Common Mistakes:
  • Trying to resize arrays manually
  • Using large fixed arrays to simulate flexibility
  • Confusing maps with dynamic arrays
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