Onelong

分享知识,与你一起进步......
RSS icon Home icon
  • golang基础

    post by onelong / 2016-11-18 18:59 Friday [工作]
    1、支持类型推导,不支持继承,重载 ,使用非正式接口,只要实体类实现了接口方法,都是接口的实现类。接口只是作为描述文件。支持struct内嵌。
    2、必任何函数定义必须花括号跟在函数声明后面而不能换行 如 func  name(a int)(int,err){},在Go语言中,函数也是一种类型 可以被推导,使用支持匿名函数和闭包。 函数的返回值支持多重返回 , 如果不赋值,整数类型默认 0,浮点数类型默认0.0,error类型 默认是nil。
    3、不用的包一定不要引入, unused 变量都会被编译器所报错。
    4、package作为引入包用,import "a"  调用包内部的函数 a.xx() 。
    6、CGo是Go语言的一个特性,可方便快速的在Go中调用C。 
    7、go通过goroutine 进行协程优化提高并发性能, 动态线程调整。
    8、6g和6l是64位版本的Go编译器和链接器,对应的32位版本工具为8g和8l。Go还有另外一个 GCC版本的编译器,名为 gccgo。
    9、多个go文件可用同一个包名字, package main的func main()是入口包。
    10、可以var声明变量如var i = 0,局部可用v := 2,但必须赋值。多变量赋值如 x,y int := 1,2 
    11、用struct声明类型,struct里面还可以声明匿名的struct,struct的字段大写开通可认为是public,小写开头是包内访问,方法也是如此。类方法定义: func (*structName) name(a int)(int,err){}
    12、支持指针,支持gc,但不支持指针计算。
    13、常量和枚举都是用const定义,const是预编译是处理,不可取地址。枚举:const(a = iota; b ; c )
    14、不允许循环依赖
    15、数组是值类型,gc认为是一个对象,在传递中copy。函数的实参都会复制,不管啥类型。
    16、Golang 中无需使用 break 语句来跳出 switch, switch可认为是if的扩展,支持if的所有功能。
    17、new只分配指针内存,make才是正确的对象指针初始化。
    18、不同的类型需要显示转化 如var i= int(byte);
    19、 struct初始化可以 如 &xx{x,y},new(Type) 和 &Type{}
    20、函数可以返回指针,但是可能会导致对象有heap到堆的拷贝,延长其生命周期。
    21、interface{}相当于java的object 
    22、string支持+=操作,Go语言的字符串是用UTF-8编码的变宽字符序列,每个字符都用一个或多个字节表示
    23、支持range,用_表示忽略类型
    24、defer延迟调用,相当于java的finally
    25、go 有数组(array)、切片(slice)和map
     

    接口:

    1、是运行时特性,耗性能,元数据都记录在实现类上

    2、特殊限制的结构体,不支持字段,只能声明方法,可嵌入其他接口,不能定义自己的方法

    3、默认值为nil,可做相等运算

    4、interface{}相等于Object(任何类型)

    5、对象赋值给接口变量时会复制该对象,复制品不可地址不可修改

    6、接口转型 inter.(type)

     

    方法:

    1、可为任意类型添加方法,支持多返回

    2、函数也是一种类型,支持闭包

    3、实例的方法变量t.test是前期绑定,类型的方法变量T.test是后期绑定

    4、支持不定长参数,支持匿名函数

    5、函数参数都是值拷贝传值,指针也一样,拷贝指针

    6、返回也是拷贝

    7、支持命名返回

    8、闭包是函数和引用环境的结合体

     

    1、包名类似namespace,与包所在目录名,编译文件名无关

    2、首字母大写,可被包外访问

    3、不支持循环依赖,用接口解耦

    4、import “相对目录/包主文件名”

    5、import _"xxx" 非导入模式,仅让该包执行init函数

    6、未使用的导入包视为错误

    7、多个init函数按顺序执行

    引用地址:
     

    我要评论