【Go语言开发】如何分发 Go 模块
介绍
许多现代编程语言允许开发人员分发现成的库供其他人在他们的程序中使用,Go 也不例外。虽然某些语言使用中央存储库来安装这些库,但 Go 从用于创建库的同一版本控制存储库分发它们。 Go 还使用称为语义版本控制的版本控制系统向用户显示何时以及进行了哪些更改。这有助于用户了解模块的较新版本是否可以安全地快速升级,并有助于确保他们的软件继续与模块一起工作。
在本教程中,您将创建和发布新模块,学习使用语义版本控制,并发布模块的语义版本。
先决条件
【Go语言开发】如何在你自己的项目中使用私有 Go 模块
介绍
Go 生态系统的一个有利方面是大量模块是开源的。由于它们是开源的,因此可以自由访问、检查、使用和学习。但是,有时出于各种原因需要制作私有 Go 模块,例如将专有业务逻辑保留在公司内部。
在本教程中,您将发布私有 Go 模块,设置身份验证以访问私有模块,并在项目中使用私有 Go 模块。
先决条件
【Go语言高级开发】如何在 Go 中使用泛型
介绍
在 Go 1.18 中,该语言引入了一个名为泛型类型(通常简称为泛型)的新特性,该特性在 Go 开发人员的愿望清单上已有一段时间了。在编程中,泛型类型是可以与多种其他类型结合使用的类型。通常在 Go 中,如果您希望能够对同一个变量使用两种不同的类型,则需要使用特定的接口,例如 io.Reader,或者使用允许使用任何值的 interface{} .但是,使用 interface{} 可能会使处理这些类型变得困难,因为您需要在其他几种潜在类型之间进行转换才能与它们交互。使用泛型类型可以让你直接与你的类型进行交互,从而使代码更清晰、更易于阅读。
在本教程中,您将创建一个与一副纸牌交互的程序。您将首先创建一个使用 interface{} 与卡片交互的卡片组,然后您将更新它以使用泛型类型。在这些更新之后,您将使用泛型将第二种类型的卡片添加到您的套牌中,然后您将更新您的套牌以将其泛型类型限制为仅支持卡片类型。最后,您将创建一个使用您的卡片并支持泛型类型的函数。
先决条件
要遵循本教程,您将需要:
【Go语言开发】如何在 Go 中转换数据类型
介绍
在 Go 中,数据类型用于对一种特定类型的数据进行分类,确定可以分配给该类型的值以及可以对其执行的操作。在编程时,有时您需要在类型之间转换值以便以不同的方式操作值。例如,您可能需要将数值与字符串连接起来,或者在初始化为整数值的数字中表示小数位。用户生成的数据通常会自动分配为字符串数据类型,即使它由数字组成;为了在此输入中执行数学运算,您必须将字符串转换为数字数据类型。
由于 Go 是一种静态类型语言,因此数据类型绑定到变量而不是值。这意味着,如果将变量定义为 int,则它只能是 int;如果不转换变量的数据类型,就无法为其分配字符串。 Go 中数据类型的静态特性使得学习转换它们的方法更加重要。
本教程将指导您完成数字和字符串的转换,并提供示例以帮助您熟悉不同的用例。
转换数字类型
Go 有多种数字类型可供选择。它们主要分为两种一般类型:整数和浮点数。
【Go语言开发】理解 Go 中的Map
大多数现代编程语言都有字典或哈希类型的概念。这些类型通常用于将数据与映射到值的键成对存储。
在 Go 中,map 数据类型是大多数程序员认为的字典类型。它将键映射到值,生成键值对,这是在 Go 中存储数据的有用方式。映射是通过使用关键字 map 后跟方括号 [ ] 中的键数据类型,然后是值数据类型来构造的。然后将键值对放在 { } 两侧的花括号内:
map[key]value{}
您通常在 Go 中使用地图来保存相关数据,例如 ID 中包含的信息。带有数据的地图如下所示:
map[string]string{"name": "Sammy", "animal": "shark", "color": "blue", "location": "ocean"}
除了花括号之外,整个映射中还有冒号连接键值对。冒号左边的词是键。键可以是 Go 中任何可比较的类型,例如字符串、整数等。
示例地图中的键是:
【Go语言开发】理解 Go 中的数组和切片
介绍
在 Go 中,数组和切片是由有序的元素序列组成的数据结构。当您想要处理许多相关值时,这些数据集合非常适合使用。它们使您能够将属于一起的数据保存在一起,压缩您的代码,并一次对多个值执行相同的方法和操作。
尽管 Go 中的数组和切片都是元素的有序序列,但两者之间存在显着差异。 Go 中的数组是一种数据结构,由有序的元素序列组成,其容量在创建时定义。一旦数组分配了它的大小,就不能再改变大小。另一方面,切片是数组的可变长度版本,为使用这些数据结构的开发人员提供了更大的灵活性。切片构成了您在其他语言中所认为的数组。
鉴于这些差异,在某些特定情况下您会使用其中一种。如果您是 Go 新手,确定何时使用它们可能会令人困惑:尽管切片的多功能性使它们在大多数情况下成为更合适的选择,但在某些特定情况下,数组可以优化程序的性能。
本文将详细介绍数组和切片,这些阵列和切片将为您提供必要的信息,以在这些数据类型之间进行选择时做出适当的选择。此外,您将回顾最常见的声明和使用数组和切片的方法。本教程将首先提供数组的描述以及如何操作它们,然后解释切片及其不同之处。
【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 指针上调用方法、错误地使用互斥锁以及尝试使用封闭通道。大多数这些情况是由于在编译程序时编译器无法检测到的编程错误造成的。
由于恐慌包含有助于解决问题的细节,因此开发人员通常使用恐慌来表示他们在程序开发过程中犯了错误。