Go语言
Go语言是一种静态类型、编译型和并发型的编程语言,由Google开发。Go的源代码文件以.go
为扩展名,文件名通常与包名保持一致。一个Go文件可以包含多个顶级声明,但通常最好只包含一个包的声明。文件名应该反映包名或者该文件所包含的主要类型或函数。
程序
- 程序一般由关键字、常量、变量、运算符、类型和函数组成。
- 程序中可能会使用到这些分隔符:括号 () ,中括号 [] 和大括号 {} 。
- 程序中可能会使用到这些标点符号: . 、 , 、 ; 、 : 和 … 。
- 程序的代码通过语句来实现结构化。每个语句不需要像 C 家族中的其它语言一样以分号 ; 结尾,因为这些工作都将由 Go 编译器自动完成。
- 如果你打算将多个语句写在同一行,它们则必须使用 ; 人为区分。
基本结构
package main import "fmt" func main() { fmt.Println("hello, world") }
包文件
包(package)是Go语言中组织代码的基本单位,它提供了一种将代码划分为可重用模块的方式。通过包,开发者可以将功能相关的代码组织在一起,实现代码的模块化和封装。这有助于提高代码的可读性、可维护性和重用性。以下是有关Go语言中包的一些关键点:
1. 包的定义
每个Go源文件都以一个包声明开始,这是通过package
关键字来指定的。包名通常是文件所在目录名称的一部分,Go编译器会将同一目录下所有声明为相同包名的.go
文件编译为一个包。
package mypackage // 包的代码...
2. 包的导入
Go程序可以通过import
关键字来导入其他包中的代码。这使得开发者可以轻松地重用标准库或其他第三方库提供的功能。
import ( "fmt"; "math/rand" )
3. 包的可见性
在Go中,如果一个包中的名称以大写字母开头,那么它是导出的,可以在其他包中直接使用。如果名称以小写字母开头,则它是未导出的,只能在定义它的包内部使用。
// 导出的函数,可以在其他包中使用 func PublicFunction() { // ... } // 未导出的函数,只能在本包内部使用 func privateFunction() { // ... }
4. 包的初始化
当包被导入时,Go会执行该包中的一个初始化顺序。首先,所有被该包导入的包都会被初始化。然后,该包中的变量会被初始化。最后,该包的初始化函数(如果有的话)会被执行。
5. 包的文档
Go语言支持通过注释来为包和包中的元素编写文档。这些注释通常位于包声明之后和任何其他代码之前。使用godoc
工具可以生成包的文档页面。
6. 包的构建
在Go中,包是构建和分发代码的基本单位。使用go build
命令时,Go编译器会查找并编译所有依赖的包,然后将它们打包为一个可执行文件。
7. 包的测试
Go语言提供了一种简单的方式在包级别编写和运行测试。通过在测试文件中编写测试函数,并使用go test命令,可以自动运行测试并报告结果。
通过使用包,Go语言实现了代码的有效组织和模块化,这使得大型项目的开发变得更加高效和系统化。开发者可以利用包来创建可重用的代码库,促进代码的共享和维护。
规则
- 包名和文件名一致:通常情况下,Go文件的名称应该与其所包含的包名相匹配。例如,如果一个文件包含
http
包,那么该文件最好命名为http.go
。 - 避免使用下划线:在Go中,文件名不应包含下划线。这是因为下划线在Go的语法中有特殊的含义,例如在变量名和函数名中使用。
- 简洁明了:文件名应该简短且具有描述性,以便于理解文件的内容和作用。
关键字
关键字在Go语言中具有特殊的意义,它们是预定义的保留字,用于表示特定的程序结构或语义。Go语言的关键字包括var
、for
、if
、else
、struct
、func
等。
规则
- 不可用作标识符:关键字不能用作变量名、类型名、包名等标识符,因为它们在Go语言中有特定的语法含义。
- 注意大小写:Go语言是大小写敏感的,因此
if
和IF
会被视为两个不同的关键字。
- 遵循语言规范:在使用关键字时,应遵循Go语言的官方文档和编程规范,以确保代码的可读性和一致性。
break | default | func | default |
select | case | defer | go |
map | struct | chan | struct |
goto | package | switch | package |
fallthrough | if | range | if |
continue | for | import | for |
var |
标识符
标识符在Go语言中用于命名变量、类型、包、函数等程序元素。一个有效的Go标识符必须以字母或下划线开头,后面可以跟字母、数字或下划线。
规则
- 有效字符:标识符可以包含字母、数字和下划线,但不能以数字开头。
- 大小写敏感:Go语言区分大小写,因此
myVar
和myvar
是两个不同的标识符。 - 避免与关键字冲突:标识符不应该与Go语言的关键字相同,以避免歧义和潜在的编译错误。
- 有意义的命名:选择有意义的标识符可以提高代码的可读性和可维护性。例如,使用
totalCount
比简单的t
或n
更好。
预定义标识符
Go 语言有 36 个预定义标识符,其中包含了基本类型的名称和一些基本的内置函数。
append | bool | byte | cap |
close | complex | complex64 | complex128 |
copy | false | float32 | float64 |
imag | int | int8 | int16 |
int32 | int64 | iota | len |
make | new | nil | panic |
println | real | recover | |
string | true | uint | uint8 |
uint16 | uint32 | uint64 | uintptr |
完