什么事Go及Go的特性
Go语言的并发是基于 goroutine 的,goroutine 类似于线程,但并非线程。可以将 goroutine 理解为一种 虚拟线程 。Go 语言运行时会参与调度 goroutine,并将 goroutine 合理地分配到每个 CPU 中,最大限度地使用CPU性能。开启一个goroutine的消耗非常小(大约2KB的内存),你可以轻松创建数百万个goroutine。
goroutine的特点:
goroutine 具有可增长的分段堆栈。这意味着它们只在需要时才会使用更多内存。 goroutine 的启动时间比线程快。 goroutine 原生支持利用 channel 安全地进行通信。 goroutine 共享数据结构时无需使用互斥锁
java运行速度其实在特定场景下并不慢,甚至还要快
Go 语言提供了一套 格式化工具 ——go fmt。一些 Go 语言的开发环境或者编辑器在保存时,都会使用格式化工具进行修改代码的格式化,这样就保证了不同开发者提交的代码都是统一的格式。
Go不允许有未使用的var变量
自带gc。
静态编译,编译好后,扔服务器直接运行。
简单的思想,没有继承,多态,类等。
丰富的库和详细的开发文档。
语法层支持并发,和拥有同步并发的channel类型,使并发开发变得非常方便。
简洁的语法,提高开发效率,同时提高代码的阅读性和可维护性。
超级简单的交叉编译,仅需更改环境变量。
关键字
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
保留字
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
例子:
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
格式化输出: