func NewCase() {// 通过new , 可以创建任意类型,并返回指针mpPtr := new(map[string]*user)if *mpPtr == nil { // 通过 * 获取指针内容fmt.Println("map 为空")}// sliceslicePtr := new([]user)if *slicePtr == nil {fmt.Println("slice 为空")}*slicePtr = append(*slicePtr, user{Name: "nick", Age: 18})userPtr := new(user)strPtr := new(string)userPtr = &user{Name: "tom",}fmt.Println(mpPtr, slicePtr, userPtr, strPtr) // 返回地址空间
}
map 为空
slice 为空
&map[] &[{nick 18 { }}] &{tom 0 { }} 0xc0000220a0
// MakeCase make 仅用于切片\集合\通道的初始化
func MakeCase() {// 初始化切片.并设置长度和容量slice := make([]int, 10, 20)slice[0] = 10// 初始化集合,并设置集合的初始大小mp := make(map[string]string, 10)mp["A"] = "a"// 初始化通道,设置通道的读写方向和缓冲大小ch := make(chan int, 10)ch1 := make(chan<- int, 10)ch2 := make(<-chan int)fmt.Println(slice, mp, ch, ch1, ch2)
}
func SliceAndMapCase() {// 定义切片var slice []intslice = []int{1, 2, 3, 4, 5}slice1 := make([]int, 10)slice1[1] = 10fmt.Println("----slice1-----")fmt.Println(slice, slice1)// 切片的截取slice2 := make([]int, 5, 10)fmt.Println("----slice2-----")fmt.Println(len(slice2), cap(slice2), slice2) // 长度和容积slice2[0] = 0slice2[1] = 1slice2[2] = 2slice2[3] = 3slice2[4] = 4// 切片的截取slice3 := slice2[1:10]fmt.Println("----slice3-----")fmt.Println(len(slice3), cap(slice3), slice3) // 长度和容积// 切片的附加数据fmt.Println("----切片的附加数据-----")slice3 = append(slice3, 1, 2, 3, 4, 5, 6, 7)fmt.Println(len(slice3), cap(slice3), slice3) // 长度和容积// 集合、无序fmt.Println("----map 集合、无序 -----")mp := make(map[string]string, 10)mp["A"] = "a"mp["B"] = "b"mp["C"] = "c"mp["D"] = "d"fmt.Println(mp)for k, v := range mp {fmt.Println(k, v)}// 删除集合delete(mp, "B")fmt.Println(mp)
}