Array Declaration Patterns
Basic Declaration Methods
Explicit Declaration with Zero Values
// Declare an array of integers with default zero values
var numbers [5]int
// Result: [0, 0, 0, 0, 0]
Initialization with Specific Values
// Full initialization
fruits := [4]string{"apple", "banana", "cherry", "date"}
// Partial initialization
scores := [5]int{10, 20, 30}
// Result: [10, 20, 30, 0, 0]
Advanced Declaration Techniques
Ellipsis Length Inference
// Let compiler determine array length
colors := [...]string{"red", "green", "blue"}
// Compiler creates an array of exactly 3 elements
Sparse Array Initialization
// Initialize specific indices
positions := [5]int{1: 10, 3: 30}
// Result: [0, 10, 0, 30, 0]
Declaration Patterns Comparison
Pattern |
Syntax |
Use Case |
Zero Value |
var arr [5]int |
Default initialization |
Full Init |
arr := [3]int{1,2,3} |
Known, complete values |
Partial Init |
arr := [5]int{1,2} |
Partial value specification |
Sparse Init |
arr := [5]int{1: 10, 3: 30} |
Non-sequential value placement |
Memory Layout Visualization
graph TD
A[Array Declaration] --> B{Initialization Type}
B --> |Zero Values| C[Default Zero Values]
B --> |Full Initialization| D[Complete Value Set]
B --> |Partial Initialization| E[Partial Values]
B --> |Sparse Initialization| F[Selective Indexing]
Complex Array Declarations
Multidimensional Arrays
// 2D array declaration
matrix := [3][4]int{
{0, 1, 2, 3},
{4, 5, 6, 7},
{8, 9, 10, 11}
}
Type-Based Declarations
// Custom type array
type Point struct {
X, Y int
}
coordinates := [3]Point{
{X: 10, Y: 20},
{X: 30, Y: 40},
{X: 50, Y: 60}
}
- Arrays are value types in Go
- Entire array is copied when passed to functions
- Use pointers or slices for large datasets
LabEx Recommendation
LabEx suggests carefully choosing array declaration patterns based on:
- Known data size
- Performance requirements
- Memory constraints
Best Practices
- Use ellipsis
[...]
for compile-time length inference
- Prefer slices for dynamic collections
- Initialize only necessary elements
- Consider memory overhead of large arrays