跳转到主要内容

【Go语言开发】如何在 Go 中导入包(Packages )

介绍


有时您的代码需要当前程序之外的其他功能。在这些情况下,您可以使用包来使您的程序更加复杂。包代表磁盘上单个目录中的所有文件。包可以定义您可以在其他 Go 文件或包中引用的函数、类型和接口。

本教程将引导您完成安装、导入和别名包。

标准库包


Go 附带的标准库是一组包。这些包包含许多编写现代软件的基本构建块。例如, fmt 包包含格式化和打印字符串的基本函数。 net/http 包包含允许开发人员创建 Web 服务、通过 http 协议发送和检索数据等功能。

要使用包中的功能,您需要使用 import 语句访问包。导入语句由 import 关键字和包名组成。

例如,在 Go 程序文件 random.go 中,您可以通过以下方式导入 math/rand 包来生成随机数:

random.go

import "math/rand"


当我们导入一个包时,我们将它作为一个单独的命名空间在我们当前的程序中可用。这意味着我们必须用点表示法来引用函数,就像在 package.function 中一样。

在实践中,math/rand 包中的函数可能类似于以下示例:

【Go语言开发】如何在 Go 中编写条件语句

介绍


条件语句是每种编程语言的一部分。使用条件语句,我们可以让代码有时运行,有时不运行,具体取决于当时程序的条件。

当我们完全执行程序的每条语句时,我们并不是要求程序评估特定条件。通过使用条件语句,程序可以确定是否满足某些条件,然后被告知下一步该做什么。

让我们看一些使用条件语句的例子:

  • 如果学生的考试成绩超过 65%,则报告她的成绩通过;如果不是,请报告她的成绩不及格。
  • 如果他的账户里有钱,计算利息;如果他不这样做,则收取罚款。
  • 如果他们买了 10 个或更多的橙子,则计算 5% 的折扣;如果他们买的少,那就不要。

通过评估条件并根据是否满足这些条件来分配要运行的代码,我们正在编写条件代码。

本教程将带您完成使用 Go 编程语言编写条件语句。

如果语句


我们将从 if 语句开始,它将评估语句是真还是假,并且仅在语句为真的情况下运行代码。

在纯文本编辑器中,打开一个文件并编写以下代码:

【Go语言开发】如何在 Go 中编写 switch 语句

介绍


条件语句使程序员能够指导他们的程序在条件为真时采取某种行动,而在条件为假时采取另一种行动。通常,我们希望将某个变量与多个可能的值进行比较,在每种情况下采取不同的行动。可以单独使用 if 语句来完成这项工作。然而,编写软件不仅是为了让事情顺利进行,而且还要将你的意图传达给你未来的自己和其他开发人员。 switch 是另一种条件语句,可用于传达 Go 程序在呈现不同选项时所采取的操作。

我们可以用 switch 语句编写的所有内容也可以用 if 语句编写。在本教程中,我们将看一些关于 switch 语句可以做什么、它替换的 if 语句以及它最适合应用的示例。

Switch 语句的结构


Switch 通常用于描述程序在为变量分配特定值时所采取的动作。以下示例演示了我们如何使用 if 语句来完成此操作:

【Go语言开发】如何在 Go 中构造 for 循环?

介绍


在计算机编程中,循环是循环以重复执行一段代码的代码结构,通常直到满足某些条件。在计算机编程中使用循环可以让您多次自动化和重复类似的任务。想象一下,如果您有一个需要处理的文件列表,或者您想计算一篇文章的行数。您将在代码中使用循环来解决这些类型的问题。

在 Go 中,for 循环根据循环计数器或循环变量实现代码的重复执行。与其他具有多个循环结构(如 while、do 等)的编程语言不同,Go 只有 for 循环。这有助于使您的代码更清晰和更具可读性,因为您不必担心多种策略来实现相同的循环结构。在开发过程中,这种增强的可读性和减少的认知负担也将使您的代码比其他语言更不容易出错。

在本教程中,您将了解 Go 的 for 循环是如何工作的,包括其使用的三个主要变体。我们将首先展示如何创建不同类型的 for 循环,然后介绍如何在 Go 中遍历顺序数据类型。最后,我们将解释如何使用嵌套循环。

【Go语言开发】在 Go 中处理恐慌(Panics )

介绍


程序遇到的错误分为两大类:程序员已经预料到的错误和程序员没有预料到的错误。我们在前两篇关于错误处理的文章中介绍的错误接口主要处理我们在编写 Go 程序时所期望的错误。错误接口甚至允许我们确认函数调用发生错误的罕见可能性,因此我们可以在这些情况下做出适当的响应。

恐慌属于第二类错误,这是程序员没有预料到的。这些不可预见的错误导致程序自发终止并退出正在运行的 Go 程序。常见的错误通常是造成恐慌的原因。在本教程中,我们将研究常见操作在 Go 中产生恐慌的几种方式,我们还将看到避免这些恐慌的方法。我们还将使用 defer 语句和恢复函数来捕获恐慌,以免它们有机会意外终止我们正在运行的 Go 程序。

了解恐慌(Panics )


Go 中有某些操作会自动返回恐慌并停止程序。常见操作包括索引超出其容量的数组、执行类型断言、在 nil 指针上调用方法、错误地使用互斥锁以及尝试使用封闭通道。大多数这些情况是由于在编译程序时编译器无法检测到的编程错误造成的。

由于恐慌包含有助于解决问题的细节,因此开发人员通常使用恐慌来表示他们在程序开发过程中犯了错误。

【Go语言开发】如何在 Go 中编写包(Packages )

介绍

一个包由位于同一目录中的 Go 文件组成,并且在开头具有相同的包语句。您可以从包中包含其他功能,以使您的程序更加复杂。一些包可通过 Go 标准库获得,因此随 Go 安装一起安装。其他的可以用 Go 的 go get 命令安装。您还可以通过使用必要的包语句在要共享代码的同一目录中创建 Go 文件来构建自己的 Go 包。

本教程将指导您编写 Go 包以在其他编程文件中使用。

先决条件

 

  • 按照如何安装和设置 Go 系列的本地编程环境中的教程之一设置 Go 编程环境。按照本地编程环境教程中的第 5 步创建您的 Go 工作区。要遵循本文中的示例和命名约定,请阅读第一部分编写和导入包。
  • 要加深您对 GOPATH 的了解,请阅读我们的文章了解 GOPATH。


编写和导入包


编写一个包就像编写任何其他 Go 文件一样。包可以包含函数、类型和变量的定义,然后可以在其他 Go 程序中使用。

【Go语言开发】理解 Go 中的延迟(defer )

介绍


Go 有许多其他编程语言中常见的控制流关键字,例如 if、switch、for 等。大多数其他编程语言中没有的一个关键字是 defer,虽然它不太常见,但您很快就会看到它在您的程序中有多大用处。

defer 语句的主要用途之一是清理资源,例如打开的文件、网络连接和数据库句柄。当您的程序使用完这些资源后,关闭它们以避免耗尽程序的限制并允许其他程序访问这些资源非常重要。 defer 通过将关闭文件/资源​​的调用保持在打开调用附近,使我们的代码更清晰,更不容易出错。

在本文中,我们将学习如何正确使用 defer 语句来清理资源以及使用 defer 时常犯的几个错误。

什么是延迟(defer )声明


defer 语句将 defer 关键字后面的函数调用添加到堆栈中。当添加它们的函数返回时,调用该堆栈上的所有调用。因为调用被放置在堆栈上,所以它们以后进先出的顺序被调用。

让我们通过打印一些文本来看看 defer 是如何工作的:

main.go

【Go语言基础】理解 Go 中的 init

介绍


在 Go 中,预定义的 init() 函数会启动一段代码,以便在包的任何其他部分之前运行。此代码将在导入包后立即执行,并且可以在您需要应用程序在特定状态下初始化时使用,例如当您具有特定配置或应用程序需要启动的一组资源时。导入副作用时也使用它,这是一种通过导入特定包来设置程序状态的技术。这通常用于将一个包注册到另一个包,以确保程序正在考虑任务的正确代码。

尽管 init() 是一个有用的工具,但它有时会使代码难以阅读,因为难以找到的 init() 实例会极大地影响代码的运行顺序。因此,对于刚接触 Go 的开发人员来说,了解这个函数的各个方面非常重要,这样他们才能确保在编写代码时以清晰的方式使用 init()。

在本教程中,您将了解如何使用 init() 来设置和初始化特定包变量、一次计算以及注册一个包以与另一个包一起使用。

先决条件


对于本文中的一些示例,您将需要: