package main
import "fmt"
/*func pop(arr [10]int) {
//冒泡排序
for i := 0; i < len(arr)-1; i++ {
for j := 0; j < len(arr)-1-i; j++ {
if arr[j] < arr[j+1] {
arr[j], arr[j+1] = arr[j+1], arr[j]
}
}
}
fmt.Println(arr)
}*/
func main() {
//数组 是指一系列同一类型数据的集合
//数组定义 var 数组名 [长度]类型
//var a [10]int
//fmt.Println(a,len(a))
//a[0] = 1
//a[2] = 1
//a[4] = 2
//a[5] = 1
//fmt.Println(a)
//for i,v := range a {
// fmt.Println(i,v)
//}
/*var a [5]int = [5]int{1,2,3,4,5}
fmt.Println(a)
b := [5]int{1,2,3,4,5}
fmt.Println(b)
c := [5]int{12,3,4}
fmt.Println(c)
d := [5]int{1:20,4:100}
fmt.Println(d)
//... 通过初始化确定数组长度
e := [...]int{1,2,3}
fmt.Println(e,len(e))
f := e
e[2] = 100
fmt.Println(e)
fmt.Println(f)
fmt.Printf("%T\n",f)
fmt.Printf("%p\n",&f)
fmt.Printf("%p\n",&f[0])
fmt.Printf("%p\n",&f[1])
fmt.Printf("%p\n",&f[2])*/
//数组求值
//arr := [5]int{1,2,-3,4,5}
//fmt.Println(arr)
//var max int = arr[0]
//var min int = arr[0]
//var sum int
//
//for i := 0; i < len(arr); i++ {
// if arr[i] > max {
// max = arr[i]
// }
// if arr[i] < min {
// min = arr[i]
// }
// sum += arr[i]
//}
//fmt.Println(max,min,sum)
//数组翻转
/*var arr = [11]int{1,2,3,4,5,6,7,8,9,10,11}
i := 0 //最小下表
j := len(arr) -1 //最大下标
for i < j {
arr[i], arr[j] = arr[j], arr[i]
i++
j--
}
fmt.Println(arr)*/
//fmt.Println(arr)
//设置随机数
//创建随机数种子
//rand.Seed(time.Now().UnixNano())
//fmt.Println(rand.Int()) //生成较大的随机数
//fmt.Println(rand.Intn(100)) //常用
//arr := [10]int{2,5,3,2,5,6,5,3,7,1}
//数组作为函数参数是值传递
// 形参和实参 是不同的地址
//内存中有两份独立的数组,存储不同的数据
//在函数调用结束后,内存回收,不会影响主函数实参的值
//pop(arr)
//二维数组
//var arr[2][3]int
//fmt.Println(arr)
//fmt.Println(len(arr))
//fmt.Println(len(arr[0]))
//arr[0][1] = 123
//fmt.Println(arr)
//b := [3][5]int{{1,2,3,4},{3,3,3,3}}
//fmt.Println(b)
//切片长度不固定
//var slice []int //空切片
//slice = append(slice,1,2,3,4,5)
//fmt.Println(slice)
//fmt.Println(len(slice))
//fmt.Println(cap(slice))
//arr := [3]int{12}
//fmt.Println(arr)
//var s2 = []int{1,2,3}
//fmt.Println(s2)
//s3 := []int{2222,2,22,3,2}
//fmt.Println(s3)
// 03 make
//s := make([]int,5,10)
//s = append(s, 1,2,3,4,5,6)
//fmt.Println(s)
//fmt.Println(len(s))
//fmt.Println(cap(s))
//空切片,指向内存地址编号为0的空间
//切片名,本身就是一个地址
/*var slice []int
fmt.Printf("%p\n",slice)
//使用append 追加时,内存地址可能发生改变
slice = append(slice,1,2,3)
fmt.Println(slice)
fmt.Printf("%p\n",slice)
fmt.Printf("%p\n",&slice[0])
fmt.Printf("%p\n",&slice[1])
fmt.Printf("%p\n",&slice[2])
fmt.Println(cap(slice))
slice = append(slice,1,2,3)
fmt.Println(cap(slice))
slice = append(slice,1,2)
fmt.Println(cap(slice))*/
//fmt.Println(slice[49])
//s := []int{10,20,30,40,50}
////[起始位置:结束位置:容量]
//slice := s[:3]
//fmt.Println(slice)
//fmt.Println(len(slice))
//fmt.Println(cap(slice))
//var s = []int{1,2,3,4,5}
//s1 := []int{6,7,8,9}
//copy(s1,s)
//fmt.Println(s1)
//fmt.Println(s)
//slice := []int{1,2,3,4,5,6}
//demo(slice)
//fmt.Println(slice)
//var m map[int]string
//fmt.Println(m)
//fmt.Println(len(m))
//m2 := make(map[int]string,3)
//
//m2[12] = "zhang"
//m2[12] = "zhang"
//m2[13] = "zhang"
//m2[14] = "zhang"
//m2[15] = "zhang"
//m2[16] = "zhang"
//m2[17] = "zhang"
//fmt.Println(m2)
////初始化
//m3 := map[int]string{1:"张三",2:"李四"}
//fmt.Println(m3)
//fmt.Println("%p\n",m3)
//m := make(map[string][3]int)
//m["小明"] = [3]int{100,99,98}
//m["小亮"] = [3]int{6,8,9}
//m["小红"] = [3]int{101,100,102}
//fmt.Println(m)
//fmt.Println(m)
//fmt.Println(m)
//fmt.Println(m)
//fmt.Println(m)
//fmt.Println(m)
//fmt.Println(m)
//
//value, ok := m["小明"]
//fmt.Println(value, ok)
//delete(m,"小明3")
//fmt.Println(m)
m := map[int]string{1:"貂蝉",2:"大桥",3:"小乔"}
demo1(m)
fmt.Println((m))
}
func demo1 (m map[int]string) {
m[4] = "zhang"
fmt.Println(m)
}
func demo (s []int) {
fmt.Println(s)
//s[0] = 123
s = append(s,3,4,5,6)
fmt.Println(s)
}
////结构体定义
//type 结构体名 struct {
// //结构体成员列表
// //成员名 数据类型
//}