go 优点

  • 自带gc。
  • 静态编译,编译好后,扔服务器直接运行。
  • 简单的思想,没有继承,多态,类等。
  • 语法层支持并发,和拥有同步并发的channel类型,使并发开发变得非常方便。
  • 超级简单的交叉编译,仅需更改环境变量。
  • Go 打败 Java 地方是内存使用和垃圾回收。
  • Go 的垃圾回收器的设计目的是 优先考虑延迟,并避免停机,这在服务器中尤其重要。这可能会带来更高的 CPU 成本,但是在水平可伸缩的体系结构中,这很容易通过添加更多的机器来解决。
  • 与 Java 相比,Go 的垃圾回收器(GC)需要做的更少:切片是一个连续的数组结构,而不是像 Java 那样的指针数组。类似地,Go maps 也使用小数组作为 buckets,以实现相同的目的。这意味着垃圾回收器的工作量减少,并且 CPU 缓存本地化也更好。
  • Go 同样在命令行实用程序中优于 Java :作为本地可执行文件,Go 程序没有启动消耗,反之 Java 首先需要加载和编译的字节码。

go的主要特征

  1. 自动立即回收。
  2. 更丰富的内置类型。
  3. 函数多返回值。
  4. 错误处理。
  5. 匿名函数和闭包。
  6. 类型和接口。
  7. 并发编程。
  8. 反射。
  9. 语言交互性。

go语言命名

  1. Go的函数、变量、常量、自定义类型、包(package)的命名方式遵循以下规则:
  1. 首字符可以是任意的Unicode字符或者下划线
  2. 剩余字符可以是Unicode字符、下划线、数字
  1. Go只有25个关键字
  1. break default func interface select
  2. case defer go map struct
  3. chan else goto package switch
  4. const fallthrough if range type
  5. continue for import return var
  1. Go还有37个保留字
  1. Constants: true false iota nil
  2. Types: int int8 int16 int32 int64
  3. uint uint8 uint16 uint32 uint64 uintptr
  4. float32 float64 complex128 complex64
  5. bool byte rune string error
  6. Functions: make len cap new append copy close delete
  7. complex real imag
  8. panic recover

import 导包

  • import _ “fmt”
    • 给fmt包起⼀个别名,匿名, ⽆法使⽤当前包的⽅法,但是 会执⾏当前的包内部的init()⽅法
  • import aa “fmt”
    • 给fmt包起⼀个别名,aa, aa.Println()来直接调⽤。
  • import . “fmt”
    • 将当前fmt包中的全部⽅法,导⼊到当前本包的作⽤中,fmt包中 的全部的⽅法可以直接使⽤API来调⽤,不需要fmt.API来调⽤