Golang 第一章 Hello,World

  • By v2ray节点

  • 2024-05-29 10:27:03

  • 评论

本章概述了 Go 的基本组件。 我们希望提供足够的信息和示例,帮助您尽快起步并做有用的事情。 这里以及整本书中的示例都是针对您在现实世界中可能必须执行的任务。 在本章中,我们将尝试让您体验一下用 Go 编写的程序的多样性,从简单的文件处理和一些图形到并发的互联网客户端和服务器。 我们当然不会在第一章中解释所有内容,但是用新语言学习此类程序可能是一种有效的入门方法。 当您学习一门新语言时,很自然地会像用已知的语言编写代码一样编写代码。 当你学习 Go 时要注意这种偏见并尽量避免它。 我们试图说明和解释如何编写好的 Go,因此在编写自己的 Go 时,请使用此处的代码作为指南。

我们将从现在传统的“Hello,World”例子开始,它出现在1978年出版的《C编程语言》的开头。C是对Go最直接的影响之一,“Hello,World”说明了许多核心思想。

gopl.io/ch1/helloworld
package main
import "fmt"
func main() {
    fmt.Println("hello, world")
}

Go 是一种编译语言。 Go工具链将源程序及其依赖的东西转换为计算机本机机器语言的指令。 这些工具可以通过一个名为 go 的命令来访问,该命令具有许多子命令。 运行这些子命令中最简单的一个,它从一个或多个名称以 . go,将其与库链接,然后运行生成的可执行文件。 (我们将在整本书中使用 $ 作为命令提示符。)

$ go run helloworld.go

输出结果

hello, world

Go 原生处理 Unicode,因此它可以处理世界上所有语言的文本。 如果该程序不仅仅是一次性实验,您可能希望编译一次并保存编译结果以供以后使用。 这是通过 go build 完成的:

$ go build helloworld.go

这将创建一个名为 helloworld 的可执行二进制文件,该文件可以随时运行,无需进一步处理:

$ ./helloworld
hello, world

我们已将每个重要示例您可以从 gopl.io 代码存储库中获取代码:

https://gopl.io/ch1/helloworld


现在让我们谈谈程序本身Go代码被组织成包,类似于其他语言中的库或模块。一个包由一个或多个位于单个目录中的·go源文件组成,这些文件定义了包的功能。每个源文件都以 此处的包声明 package main 声明该文件属于哪个包,后面是它导入的其他包的列表,然后是存储在该文件中的程序的声明

Go 标准库拥有 100 多个包,用于执行输入和输出、排序 和文本操作等常见任务。例如,fmt 包包含打印格式化输出和 扫描输入的功能。 Println是fmt中的基本输出函数之一; 它打印一个或多个值,用空格分隔,末尾有一个换行符,以便 这些值显示为单行输出。

mian包很特别。它定义了一个独立的可执行程序,而不是一个 库。在 main 包中,main 函数也很特殊——它是程序开始执行的 地方。 main 做什么就是程序做什么。当然,main 通常会调用其 他包中的函数来完成大部分工作,例如函数 fmt.Println。

我们必须告诉编译器这个源文件需要哪些包;这就是包声明后面的导入声明的作用。“hello, world”程序只使用了一个来自其他包的函数,但大多数程序都会导入更多包。

您必须准确导入所需的软件包。如果缺少导入或存在不必要的导入,程序将无法编译。此严格要求可防止在程序发展过程中积累对未使用软件包的引用。

导入声明必须跟在包声明之后。之后,程序由函数、变量、常量和类型的声明组成(由关键字 func、var、const 和 type 引入);在大多数情况下,声明的顺序无关紧要。这个程序尽可能短,因为它只声明了一个函数,而这个函数又只调用了一个其他函数。为了节省空间,我们有时在展示示例时不会显示包和导入声明,但它们在源文件中,并且必须存在才能编译代码。

函数声明由关键字 func、函数名称、参数列表(对于 main 函数为空)、结果列表(此处也是空)和函数主体(定义其功能的语句)组成,这些语句括在括号中。我们将在第 5 章中更详细地介绍函数。

Go 不要求在语句或声明的末尾使用分号,除非两个或多个分号出现在同一行。实际上,某些标记后面的换行符会转换为分号,因此换行符的位置与正确解析 Go 代码有关。例如,函数的左括号 { 必须与函数声明的末尾位于同一行,不能单独位于一行;在表达式 x+ y 中,+ 运算符之后允许使用换行符,但之前不允许使用换行符。

Go 在代码格式化方面立场坚定。 gofmt 工具将代码重写为标准格式, go 工具的 fmt 子命令将 gofmt 应用于指定包中的所有文件,或默认情况下应用于当前目录中的文件。 本书中的所有 Go 源文件都经过 gofmt 运行,您应该养成对自己的代码执行相同操作的习惯。 通过命令声明标准格式可以消除许多关于琐事的无意义争论,更重要的是,可以实现各种自动源代码转换,如果允许任意格式,这些转换将是不可行的。

许多文本编辑器可以配置为每次保存文件时运行 gofmt,以便您的源代码始终正确格式化。相关工具 goimports 还可以根据需要管理导入声明的插入和删除。它不是标准发行版的一部分,但您可以使用以下命令获取它:

$ go get golang.org/x/tools/cmd/goimports

对于大多数用户来说,下载和构建软件包、运行测试、显示文档等的常用方法是使用 go 工具,我们将在第 10.7 节中介绍它。

v2ray节点购买