package main

import "fmt"

func main() {
	slice1 := []int{1, 2, 3}

	fmt.Printf("len = %d, slice = %v\n", len(slice1), slice1)

	var slice2 []int
	fmt.Printf("len = %d, slice = %v\n", len(slice2), slice2)

	var slice3 []int
	slice3 = make([]int, 3)
	slice3[0] = 100
	fmt.Printf("len = %d, slice = %v\n", len(slice3), slice3)

	var slice4 []int = make([]int, 3)
	fmt.Printf("len = %d, slice = %v\n", len(slice4), slice4)

	slice5 := make([]int, 3)
	fmt.Printf("len = %d, slice = %v\n", len(slice5), slice5)

	var slice6 []int
	if slice6 == nil {
		fmt.Println("slice6为空")
	} else {
		fmt.Println("slice长度为", len(slice6))
	}

	// 长度与容量
	var numbers = make([]int, 3, 5)
	fmt.Printf("len = %d, cap = %d, slice = %v\n", len(numbers), cap(numbers), numbers)
	// 追加一个元素1(len(numbers) = 4)
	numbers = append(numbers, 1)
	fmt.Printf("len = %d, cap = %d, slice = %v\n", len(numbers), cap(numbers), numbers)
	numbers = append(numbers, 2)
	fmt.Printf("len = %d, cap = %d, slice = %v\n", len(numbers), cap(numbers), numbers)
	numbers = append(numbers, 3)
	fmt.Printf("len = %d, cap = %d, slice = %v\n", len(numbers), cap(numbers), numbers)

	var numbers2 = make([]int, 3)
	fmt.Printf("len = %d, cap = %d, slice = %v\n", len(numbers2), cap(numbers2), numbers2)

	// 截取
	s := []int{1, 2, 3}
	s1 := s[0:2]
	s2 := make([]int, 3)
	copy(s2, s)
	s[1] = 200
	fmt.Println(s1)
	fmt.Println(s)
	fmt.Println(s2)
}