package main

import "fmt"

func main() {
	// 数组同一类型的集合
	var arr [50]int
	// 1 赋值
	// 操作数组,下标从0开始,索引从0到len()-1
	for i := 0; i < len(arr); i++ {
		arr[i] = i + 1
		fmt.Printf("arr[%v] = %v\n", i, arr[i])
	}

	// 定义数组的时候,数组的元素个数必须是常量
	//	n := 5
	//	var arr2 [n]int //err
	fmt.Printf("------------------------------")
	// 2 迭代打印
	for i, data := range arr {
		fmt.Printf("arr[%d] = %d\n", i, data)
	}

	fmt.Printf("------------------------------\n")
	/*********数组的初始化*************/
	// 1 全部初始化
	var a [5]int = [5]int{1, 2, 3, 4, 5}
	fmt.Println("a=", a)
	// 使用自动推导类型
	b := [5]int{1, 2, 3, 4, 5}
	fmt.Println("b=", b)
	// 2 部分初始化,没有初始化的部分,自动赋值为0
	c := [5]int{1, 2, 3}
	fmt.Println("c=", c)
	// 3 指定元素进行初始化
	d := [5]int{2: 10, 4: 20}
	fmt.Println("d=", d)

    fmt.Println("==============数组的比较和赋值=========")
	// 数组支持比较,只支持==或者!=,比较是不是每一个元素都一样,数组比较,数组的数据类型要一样
	f := [5]int{1, 2, 3, 4, 5}
	g := [5]int{1, 2, 3, 4, 5}
	h := [5]int{1, 4, 5}
	fmt.Println("f==g", f == g)
	fmt.Println("f==h", f == h)
	// 同类型的数组,可以进行赋值
	var m [5]int
	m = f
	fmt.Println("m=", m)
}