Go 语言既有静态编译语言的安全和性能,又兼备了动态语言开发维护的高效率。从变量声明以及使用的多种方式可以看出。 Go语言从 C 语言中继承了很多理念,包括表达式语法,控制结构,基础数据类型,调用参数传值,指针等。 Go程序是由包(Packages)组成的。每个Go程序都包含一个main包,它是程序执行的入口点。执行时会寻找包里的main函数进行执行。包之间是有隔离原则的,只有相同的包可以放在同一文件夹下,而且包中函数也不能有重名。一个文件夹只有一种包,就可以方便地使用import语句导包,通常包名与文件夹名设置相同。 Go语言自带垃圾回收机制(GC),内存自动回收,不需开发人员手动管理(C语言)。 Go在语言级别上提供了并发的支持。可以使用goroutine(轻量级线程,可实现大并发处理,高效利用多核)来并发地执行函数或方法。 Go语言实现了管道通信机制,利用特有的管道(channel), 可以实现不同的goroutine之间的相互通信。 Go语言支持函数可以返回多个值,提出了切片 slice、延时执行 defer等创新。 Go语言提供了大部分流行的运算符,但明确不支持三元运算符。 Go语言有两种分支控制,if和switch,使用方式与流行的编程语言相同,if适用于大范围的条件控制转移,switch相反。 Go语言的循环控制只有for语句,可以使用分支控制if加上跳转控制语句break和continue实现常见的while和do while循环控制,跳转控制语句还包含goto,但一般不推荐使用 goto 语句, 以免造成程序流程的混乱,使理解和调试程序都产生困难。 Go程序有两种执行方式,go run和go build。go run命令用于编译并直接运行Go源代码文件。自动编译指定的源文件,生成临时的可执行文件,并直接运行该可执行文件,并且不会在磁盘上保留编译文件。go build命令用于将Go源代码编译成可执行文件,但不会立即执行。它会在当前目录下生成一个与包名相同的可执行文件(或自定义的输出文件名),然后可以手动运行生成的可执行文件。使用go run时,当前程序所需的所有依赖都必须显式导入,如果有多个main包代码被分割在不同文件,运行包含main函数的程序时用到了其它文件中的main包函数或变量,程序执行会报错。使用go build就不会有这种问题,因为它会自动将依赖打包。而且不是main包而含有main函数的程序也能被编译执行,这是go run命令做不到的。