1、go数据类型
常用类型:
            布尔类型: true,false
            数字类型:
                        unit8[u代表无符号unsingal],unit16,unit32,unit64
                        int8,int16,int32,int64
                        float32,float64,complex64,complex128                        
            字符串类型:[考虑字符串连接方式]
            派生类型:
                        指针
                        数组
                        结构化
                        channel
                        函数
                        切片
                        接口
                        map
2、变量:
            第一种:指定变量类型 var name string
            第二种: 自行判定 var name= "aaaa"
            第三种: c := "bbb",变种a, b, c := 5, 7, "abc"
            多变量声明:
                        var a,b,c,d int
                        var(
                                a int
                                b int32
                                c int8
                                d int 64
                            )
3、常量:
        显示定义 const str string = 'abc'
        隐式定义 const str = 'abc'
        多相同类型定义const str,str1,str2 = 'abc','bcd','edf'
        枚举 const(
            unknown=0
            famle=1
        )
        iota 在const中从0开始自增
4、运算符
        运算符    描述    实例
        &    返回变量存储地址    &a; 将给出变量的实际地址。
        *    指针变量。    *a; 是一个指针变量

5、条件语句
        if
        if{}else{}
        switch type:
                    case 1:
                    case 2:
        select:类似于switch随机实现一个case
        
6、循环语句
        for true {无线循环}
7、函数
        //定义
        func max(a,b int) int{}
        //调用
        a,b := 10,11
        max(a,b)
        
        返回多个值
        func max(a,b int) (int,int){return a,b}
        //调用
        a,b := 10,11
        max(a,b)
8、变量作用域
        变量分为:全局变量、局部变量、形参
        Go 语言程序中全局变量与局部变量名称可以相同,但是函数内的局部变量会被优先考虑
9、数组
        数组定义 var name [10] string
        数组初始化 var name = [2]string{"hello","world} 初始化数组中 {} 中的元素个数不能大于 [] 中的数字
        如果忽略 [] 中的数字不设置数组大小,Go 语言会根据元素的个数来设置数组的大小:var balance = [...]float32{1000.0, 2.0, 3.4, 7.0, 50.0}
        多维数组:
            数组定义:var threedim [5][10][4]int
            a = [3][4]int{  
             {0, 1, 2, 3} ,   /*  第一行索引为 0 */
             {4, 5, 6, 7} ,   /*  第二行索引为 1 */
             {8, 9, 10, 11},   /* 第三行索引为 2 */(以上代码中倒数第二行的 } 必须要有逗号,因为最后一行的 } 不能单独一行,)
            }
        向函数传递数组
            
10、指针
        一个指针变量指向了一个值的内存地址。
        指针变量:var var_name *var-type var-type 为指针类型,var_name 为指针变量名,* 号用于指定变量是作为一个指针,var ip *int        /* 指向整型*/
        空指针:当一个指针被定义后没有分配到任何变量时,它的值为 nil。nil 指针也称为空指针,nil在概念上和其它语言的null、None、nil、NULL一样,都指代零值或空值
        判断指针是否为空指针:
                if(ptr != nil)     /* ptr 不是空指针 */
                if(ptr == nil)    /* ptr 是空指针 */
        指针的指针
        指针作为函数参数(如何返回数组或者指针类型的数组)