Go 学习笔记

  1. Go 代码在发布之前,要 go fmt 转化成标准化代码格式,而避免了大家为了各种标准格式产生争议

  2. 一个 go 程序有一个 main 包

  3. 左大括号 { 必须和方法声明放在同一行,这是编译器的强制规定

  4. GO 语言中不存在类型继承

  5. 函数也可以是一个确定的类型,就是以函数作为返回类型。这种类型的声明要写在函数名和可选的参数列表之后,例如:

    1
    func FunctionName (a typea, b typeb) typeFunc
  6. 一个函数可以拥有多返回值,返回类型之间需要使用逗号分割,并使用小括号 () 将它们括起来,如:

    1
    func FunctionName (a typea, b typeb) (t1 type1, t2 type2)
  7. 由于 Go 语言不存在隐式类型转换,因此所有的转换都必须显式说明,就像调用一个函数一样(类型在这里的作用可以看作是一种函数):

    1
    valueOfTypeB = typeB(valueOfTypeA)

    类型 B 的值 = 类型 B(类型 A 的值)

    示例:

    1
    2
    a := 5.0
    b := int(a)

    但这只能在定义正确的情况下转换成功,例如从一个取值范围较小的类型转换到一个取值范围较大的类型(例如将 int16 转换为 int32)。当从一个取值范围较大的转换到取值范围较小的类型时(例如将 int32 转换为 int16 或将 float32 转换为 int),会发生精度丢失(截断)的情况。当编译器捕捉到非法的类型转换时会引发编译时错误,否则将引发运行时错误。

    具有相同底层类型的变量之间可以相互转换:

    1
    2
    3
    var a IZ = 5
    c := int(a)
    d := IZ(c)

    golang中printf的用法