// Illustrates how slices capacity will increase as elements are added.
package main

import "fmt"

func main() {
	var data = []int{1, 2, 3}
	fmt.Println(data, len(data), cap(data))
	data = append(data, 10)
	fmt.Println(data, len(data), cap(data))
	data = append(data, 20)
	fmt.Println(data, len(data), cap(data))
	data = append(data, 30)
	fmt.Println(data, len(data), cap(data))
	data = append(data, 40)
	fmt.Println(data, len(data), cap(data))

	//creates a slice of 3 ints using slice literal.
	// specifies the indices with values in the slice literal
	var x = []int{1, 5: 4, 6, 10: 100, 15}
	// [1 0 0 0 0 4 6 0 0 0 100 15]
	fmt.Println(x)

	// multi-dimensional slice "simulatation"
	var y [][]int
	fmt.Println(y)
	//reading and writing using bracket syntax
	y = append(y, []int{1, 2, 3})
	fmt.Println(y, len(y), cap(y))
	fmt.Println(y[0])

	// Forloop

	// we can us := inside of functions not in globals of module
	numbers := []int{1, 3, 5, 7, 9}

	for i := 0; i < len(numbers); i++ {
		fmt.Println(numbers[i])
	}
}