package main

import "fmt"

func add1(s []int, x int) []int {
	s = append(s, x)
	fmt.Printf("add1-addrness:%p", &s)
	fmt.Println("")
	return s

}
func add2(s []int, x int) {
	s = append(s, x)
}
func add3(s [10]int, x int) {
	s[9] = 10
	fmt.Println(s)
	fmt.Printf("add1-addrness:%p", &s)
	fmt.Println("")
}

func main() {
	// sliceList()
	// nums := make([]int, 1)
	// nums = append(nums, 0)
	// fmt.Println(nums, len(nums), cap(nums))
	sliceAppend()
}

func sliceList() {
	//切片，引用类型
	a := [...]int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
	fmt.Println(a)
	s1 := a[5:8] //len=3 cap=5
	fmt.Println("s1", s1)
	fmt.Printf("s1-addrness:%p", &s1)
	fmt.Println("")
	add1(s1, 0)
	fmt.Println("a", a)
	fmt.Println("s1", s1)

	add2(s1, 1)
	fmt.Println("a", a)
	fmt.Println("s1", s1)
	//数组，值类型
	fmt.Println("值类型-------------------")
	b := [10]int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
	fmt.Printf("b的addrness:%p\n", &b)
	add3(b, 0)
	fmt.Println(b)
}

func sliceAppend() {
	arr := [5]int{1, 2, 3, 4} // [1 2 3 4 0]
	fmt.Println(arr)

	s2 := arr[2:] // [3 4 0]
	printSlice(s2)
	s2 = append(s2, 5)
	printSlice(s2)
	fmt.Println(arr)
}

func printSlice(s []int) {
	fmt.Printf("len=%d cap=%d %p %v\n", len(s), cap(s), s, s)
}
