go

Go 系列 入门

Posted by lichao modified on July 10, 2020

特点

  1. Go 是一门编译型语言,Go 语言的工具链将源代码及其依赖转换成计算机的机器指令(静态编译)
  2. Go 语言原生支持 Unicode,它可以处理全世界任何语言的文本。
  3. Go 语言的代码通过包(package)组织,包类似于其它语言里的库 (libraries)或者模块(modules)。
  4. main 包比较特殊。它定义了一个独立可执行的程序,而不是一个库。在 main 里的 main 函数也很特殊,它是整个程序执行时的入口
  5. 必须恰当导入需要的包,缺少了必要的包或者导入了不需要的包,程序都无法编译通过。
  6. import 声明必须跟在文件的 package 声明之后
  7. Go语言不允许使用无用的局部变量(local variables),因为这会导致编译错误。

核心理念

工具

Go 语言提供的工具都通过一个单独的命令 go 调用, go 命令有一系列子命令。

  • run: 这个命令编译一个或多个以.go结尾的源文件,链接库文件,并运行最终生成的可执行文件。
  • build: 编译生成可执行的二进制文件

关键字

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

此外,还有大约 30 多个预定义的名字,比如int和true等,主要对应内建的常量、类型和函数。

内建常量: true false iota nil

内建类型: int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 uintptr float32 float64 complex128 complex64 bool byte rune string error

内建函数: make len cap new append copy close delete complex real imag panic recover

这些内部预先定义的名字并不是关键字,你可以在定义中重新使用它们。在一些特殊的场景中重新定义它们也是有意义的,但是也要注意避免过度而引起语义混乱。

名字的开头字母的大小写决定了名字在包外的可见性。如果一个名字是大写字母开头的(译注:必须是在函数外部定义的包级名字;包级函数名本身也是包级名字),那么它将是导出的,也就是说可以被外部的包访问,例如fmt包的Printf函数就是导出的,可以在fmt包外部访问。包本身的名字一般总是用小写字母。