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 select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var
- Go还有37个保留字
Constants: true false iota nil
Types: int int8 int16 int32 int64
uint uint8 uint16 uint32 uint64 uintptr
float32 float64 complex128 complex64
bool byte rune string error
Functions: 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来调⽤