go 优点
- 自带gc。
- 静态编译,编译好后,扔服务器直接运行。
- 简单的思想,没有继承,多态,类等。
- 语法层支持并发,和拥有同步并发的channel类型,使并发开发变得非常方便。
- 超级简单的交叉编译,仅需更改环境变量。
- Go 打败 Java 地方是内存使用和垃圾回收。
- Go 的垃圾回收器的设计目的是 优先考虑延迟,并避免停机,这在服务器中尤其重要。这可能会带来更高的 CPU 成本,但是在水平可伸缩的体系结构中,这很容易通过添加更多的机器来解决。
- 与 Java 相比,Go 的垃圾回收器(GC)需要做的更少:切片是一个连续的数组结构,而不是像 Java 那样的指针数组。类似地,Go maps 也使用小数组作为 buckets,以实现相同的目的。这意味着垃圾回收器的工作量减少,并且 CPU 缓存本地化也更好。
- Go 同样在命令行实用程序中优于 Java :作为本地可执行文件,Go 程序没有启动消耗,反之 Java 首先需要加载和编译的字节码。
go的主要特征
自动立即回收。更丰富的内置类型。函数多返回值。错误处理。匿名函数和闭包。类型和接口。并发编程。反射。语言交互性。
go语言命名
- Go的函数、变量、常量、自定义类型、包
(package)的命名方式遵循以下规则:
首字符可以是任意的Unicode字符或者下划线剩余字符可以是Unicode字符、下划线、数字
- Go只有25个关键字
break default func interface selectcase defer go map structchan else goto package switchconst fallthrough if range typecontinue for import return var
- Go还有37个保留字
Constants: true false iota nilTypes: int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 uintptr float32 float64 complex128 complex64 bool byte rune string errorFunctions: make len cap new append copy close delete complex real imag panic recover
import 导包
- import _ “fmt”
- 给fmt包起⼀个别名,匿名, ⽆法使⽤当前包的⽅法,但是 会执⾏当前的包内部的init()⽅法
- import aa “fmt”
- 给fmt包起⼀个别名,aa, aa.Println()来直接调⽤。
- import . “fmt”
- 将当前fmt包中的全部⽅法,导⼊到当前本包的作⽤中,fmt包中 的全部的⽅法可以直接使⽤API来调⽤,不需要fmt.API来调⽤