Go语言入门|包、关键字和标识符

简介: Go语言入门|包、关键字和标识符

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语言的关键字包括varforifelsestructfunc等。

规则

  • 不可用作标识符:关键字不能用作变量名、类型名、包名等标识符,因为它们在Go语言中有特定的语法含义。
  • 注意大小写:Go语言是大小写敏感的,因此ifIF会被视为两个不同的关键字。
  • 遵循语言规范:在使用关键字时,应遵循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语言区分大小写,因此myVarmyvar是两个不同的标识符。
  • 避免与关键字冲突:标识符不应该与Go语言的关键字相同,以避免歧义和潜在的编译错误。
  • 有意义的命名:选择有意义的标识符可以提高代码的可读性和可维护性。例如,使用totalCount比简单的tn更好。

预定义标识符

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 
print  println  real  recover 
string  true  uint  uint8 
uint16 uint32 uint64 uintptr




目录
相关文章
|
5天前
|
存储 Go API
一个go语言编码的例子
【7月更文挑战第2天】本文介绍Go语言使用Unicode字符集和UTF-8编码。Go中,`unicode/utf8`包处理编码转换,如`EncodeRune`和`DecodeRune`。`golang.org/x/text`库支持更多编码转换,如GBK到UTF-8。编码规则覆盖7位至21位的不同长度码点。
70 1
一个go语言编码的例子
|
8天前
|
JSON 算法 测试技术
在go语言中调试程序
【6月更文挑战第29天】Go语言内置`testing`包支持单元测试、基准测试和模糊测试。`go test`命令可执行测试,如`-run`选择特定测试,`-bench`运行基准测试,`-fuzz`进行模糊测试。
17 2
在go语言中调试程序
|
6天前
|
安全 Go
Go语言的iota关键字有什么用途?
**Go语言中的`iota`是常量生成器,用于在`const`声明中创建递增的常量。`iota`在每个新的`const`块重置为0,然后逐行递增,简化了枚举类型或常量序列的定义。例如,定义星期枚举:** ```markdown ```go type Weekday int const ( Sunday Weekday = iota // 0 Monday // 1 Tuesday // 2 ... ) ``` 同样,`iota`可用于定义不同组的常量,如状态码和标志位,保持各自组内的递增,提高代码可读性。
|
2天前
|
监控 搜索推荐 Go
万字详解!在 Go 语言中操作 ElasticSearch
本文档通过示例代码详细介绍了如何在Go应用中使用`olivere/elastic`库,涵盖了从连接到Elasticsearch、管理索引到执行复杂查询的整个流程。
8 0
|
6天前
|
IDE Linux Go
记录一个go语言与IDE之间的问题
【7月更文挑战第1天】本文介绍在IDE中调试Go应用可能遇到的问题。当问题与IDE的自动完成有关,可以试着使用其他编辑器如Linux的vim是否无此问题。这可以验证表明IDE可能不完全兼容最新语言版本,建议使用无自动检测工具临时解决。
22 0
|
10天前
|
编译器 Go C++
必知的技术知识:go语言快速入门教程
必知的技术知识:go语言快速入门教程
|
2月前
|
开发框架 安全 中间件
Go语言开发小技巧&易错点100例(十二)
Go语言开发小技巧&易错点100例(十二)
41 1
|
17天前
|
中间件 Go
go语言后端开发学习(三)——基于validator包实现接口校验
go语言后端开发学习(三)——基于validator包实现接口校验
|
18天前
|
存储 Go 开发工具
go语言后端开发学习(二)——基于七牛云实现的资源上传模块
go语言后端开发学习(二)——基于七牛云实现的资源上传模块
|
18天前
|
JSON 算法 Go
go语言后端开发学习(一)——JWT的介绍以及基于JWT实现登录验证
go语言后端开发学习(一)——JWT的介绍以及基于JWT实现登录验证