1.简略demo

a := 20b := 20fmt.Printf("a:%d",a)fmt.Println()fmt.Printf("b:%d",b)fmt.Println()changeA(&a)  //指针拷贝changeB(b)   //值拷贝fmt.Printf("after changeA a:%d",a)fmt.Println()fmt.Printf("after changeB b:%d",b)func changeA(a *int){    *a = 100}func changeB(b int){    b = 100}--后果a:20b:20after changeA a:100after changeB b:20指针拷贝会批改传递过去的值,值拷贝仅仅批改拷贝后的值当须要批改传入的参数原来的值或者传入的对象比拟大的时候,能够应用指针传递golang中援用类型的申明默认是没有初始化的,定义一个指针后,该指针是nil能够通过new进行初始化。

2.make

与new性能雷同的还有make,make只对slice、map和chan进行初始化,slice、map和chan必须通过make初始化后,才能够操作func make(t Type, size ...IntegerType) Typemake返回的是指针类型new对指针进行初始化,返回指针类型对应的默认值,并能够对指针变量进行赋值

3.map 找子字符串个数

str := "a b c ab c a do do i i test am you"mapC := make(map[string]int)strArr := strings.Split(str, " ")fmt.Println(strArr)for k := range strArr {    mapC[strArr[k]] = mapC[strArr[k]] + 1}fmt.Println(mapC)--[a b c ab c a do do i i test am you]map[a:2 ab:1 am:1 b:1 c:2 do:2 i:2 test:1 you:1]