Understanding Arrays and Slices in Go
Arrays and slices are fundamental data structures in the Go programming language for managing collections of elements.
An array in Go is a fixed-size sequence of elements of the same type. The size of an array is specified at compile time and cannot be changed at runtime. Arrays provide direct access to individual elements using zero-based indexing.
Slices, on the other hand, are dynamic and flexible wrappers around arrays. A slice is a lightweight data structure that represents a segment of an underlying array. Unlike arrays, slices can grow or shrink dynamically at runtime. Slices include a pointer to the underlying array, along with a length and capacity, allowing for efficient operations like appending elements.
Understanding the differences between arrays and slices is crucial for effective memory management and data manipulation in Go. Arrays are suitable for fixed-size collections, while slices are preferred for handling variable-size data and supporting dynamic operations. Both arrays and slices are integral to Go's idiomatic approach to managing collections and data structures efficiently.
In an array, store zero or more
than zero
elements in it. which means the index of the first element is
array [0] and the index of the last element is an
array [len(array)-1].
Arrays are created in two different ways:
- Using var keyword
- Go program to illustrate how to create:
package main
import "fmt"
func main() {
var a [5]int
fmt.Println(" size of the array: ", a)
}
Output :
PS C:\GO_Language\Array> go run arr.go
thr size of the array [0 0 0 0 0]
- Go program to illustrate the values of an array
package main
import "fmt"
func main() {
a: = [5]int {1, 3, 4, 2, 5}
sum: = 0
for i: = 0; i < len(a); i++ {
sum += a[i]
fmt.Println("The value :", sum)
}
}
Output:
PS C:\GO_Language\Array> go run arr2.go
The value : 1
The value : 4
The value : 8
The value : 10
The value : 15
- Go program to illustrate and insert the values in an array using for loop
package main
import "fmt"
func main() {
var n [10]int
var i, j int
for i = 0; i < 10; i++ {
n[i] = i + 100
}
for j = 0; j < 10; j++ {
fmt.Printf("Element[%d] =%d\n", j, n[j])
}
}
Output :
PS C:\GO_Language\Array> go run arr3.go
Element[0] =100
Element[1] =101
Element[2] =102
Element[3] =103
Element[4] =104
Element[5] =105
Element[6] =106
Element[7] =107
Element[8] =108
Element[9] =109
- Go program to illustrate the Address of a variable
package main
import "fmt"
func main() {
x: = 7
y: = &x
fmt.Println(x, y)
}
Output:
PS C:\GO_Language\Array> go run arr4.go
7 0xc000014088
- Go program to illustrate Assigning values through pointers
package main
import "fmt"
func main() {
i, j: = 42, 2372
p: = &i
fmt.Println(*p)
*p = 21
fmt.Println(i)
p = &j
*p = *p / 37
fmt.Println(j)
}
Output:
PS C:\GO_Language\Array> go run arr5.go
42
21
64
PS C:\GO_Language\Array>
- Go program to illustrate the value of null pointer.
package main
import "fmt"
func main() {
var ptr *int
fmt.Printf("the Value of ptr is :%x\n", ptr)
}
Output :
PS C:\GO_Language\Array> go run arr6.go
the Value of ptr is :0
- Go program to illustrate the division using pointer
package main
import "fmt"
func main() {
i, j: = 42, 2372
p: = &i
fmt.Println(*p)
fmt.Printf("%T \n ", p)
*p = 21
fmt.Println(i)
p = &j
*p = *p / 37
fmt.Println(j)
}
Output :
PS C:\GO_Language\Array> go run arr7.go
42
*int
21
64