package main

import "fmt"

func main() {
	// slice - серуктура данных на основе массива, в которую можно добавлять данные в конец
	// Объявление slice (объявление переменной не приводит к созданию slice, в отличии от массива)
	var mySlice []int

	// создание slice
	mySlice = make([]int, 5)
	// присваивание значения
	mySlice[0] = 42

	// короткое объявление slice
	slc2 := make([]string, 3)
	slc2[0] = "Hello "
	slc2[1] = "World"
	slc2[2] = "!"

	// можно использовать литералы slice
	slc3 := []int{
		2,
		3,
		5,
	}
	slc4 := []bool{false, true}

	fmt.Printf("mySlice = %#v, slc2 = %#v\n", mySlice, slc2)
	fmt.Println(len(slc2))

	for _, val := range slc2 {
		fmt.Print(val)
	}
	fmt.Println()

	fmt.Printf("slc3 = %#v, slc4 = %#v", slc3, slc4)
}
