【Go语言开发】如何在 Ubuntu 20.04 上安装 Go
介绍
Go,有时也被称为“Golang”,是谷歌于 2012 年发布的一种开源编程语言。谷歌的目的是创建一种可以快速学习的编程语言。
自发布以来,Go 在开发人员中非常流行,并被用于从云或服务器端应用程序到人工智能和机器人技术的各种应用程序。本教程概述了如何在 Ubuntu 20.04 服务器上下载和安装最新版本的 Go(当前版本 1.16.7),构建著名的 Hello, World!应用程序,并将您的 Go 代码转换为可执行的二进制文件以供将来使用。
先决条件
本教程需要一个 Ubuntu 20.04 系统,该系统配置有具有 sudo 权限的非 root 用户和防火墙,如使用 Ubuntu 20.04 的初始服务器设置中所述。
第 1 步 — 安装 Go
在此步骤中,您将在服务器上安装 Go。
首先,通过 ssh 连接到您的 Ubuntu 服务器:
ssh sammy@your_server_ip
接下来,导航到 Web 浏览器中的官方 Go 下载页面。从那里复制当前二进制版本的 tarball 的 URL。
【Go语言开发】理解 Go 中的数据类型
介绍
数据类型指定在编写程序时特定变量将存储的值的种类。数据类型还决定了可以对数据执行哪些操作。
在本文中,我们将介绍 Go 原生的重要数据类型。这不是对数据类型的详尽调查,但会帮助您熟悉 Go 中可用的选项。了解一些基本数据类型将使您能够编写更清晰、高效执行的代码。
背景
考虑数据类型的一种方法是考虑我们在现实世界中使用的不同类型的数据。现实世界中的数据示例是数字:例如,我们可以使用整数(0、1、2、...)、整数(...、-1、0、1、...)和无理数(π)。
通常,在数学中,我们可以组合不同类型的数字,并得到某种答案。我们可能想在 π 上加 5,例如:
5 + π
我们可以保留等式作为解决无理数的答案,或者将 π 舍入为一个小数位数缩写的数字,然后将这些数字相加:
5 + π = 5 + 3.14 = 8.14
但是,如果我们开始尝试用另一种数据类型(例如单词)来评估数字,事情就变得不那么有意义了。我们将如何求解以下方程?
【Go语言开发】在 Go 中使用字符串的介绍
在 Go 中使用字符串的介绍
字符串是一个或多个字符(字母、数字、符号)的序列,可以是常量或变量。由 Unicode 组成的字符串是不可变的序列,这意味着它们是不变的。
因为文本是我们在日常生活中使用的一种常见的数据形式,所以字符串数据类型是编程的一个非常重要的构建块。
本 Go 教程将介绍如何创建和打印字符串、如何连接和复制字符串以及如何将字符串存储在变量中。
字符串文字
在 Go 中,字符串存在于反引号 `(有时称为反引号)或双引号内。根据您使用的引号,字符串将具有不同的特征。
使用反引号,如` ```bar``` `,将创建一个原始字符串文字。在原始字符串文字中,任何字符都可以出现在引号之间,反引号除外。这是一个原始字符串文字的示例:
`Say "hello" to Go!`
反斜杠在原始字符串文字中没有特殊含义。例如,\n 将显示为实际字符、反斜杠 \ 和字母 n。与解释的字符串文字不同,其中 \n 将插入一个实际的新行。
原始字符串文字也可用于创建多行字符串:
【Go语言开发】如何在 Go 中格式化字符串
由于字符串通常由书面文本组成,因此在许多情况下,我们可能希望通过标点符号、换行符和缩进更好地控制字符串的外观,以使它们对人类更具可读性。
在本教程中,我们将介绍一些使用 Go 字符串的方法,以确保所有输出文本的格式正确。
字符串文字
让我们首先区分字符串文字和字符串值。字符串文字是我们在计算机程序的源代码中看到的,包括引号。当我们调用 fmt.Println 函数并运行程序时,我们会看到一个字符串值。
在“你好,世界!”程序,字符串文字是“你好,世界!”而字符串值为 Hello, World!不带引号。字符串值是我们在运行 Go 程序时在终端窗口中看到的输出。
但是某些字符串值可能需要包含引号,例如当我们引用源时。因为字符串字面量和字符串值不等价,所以通常需要为字符串字面量添加额外的格式,以确保字符串值按照我们想要的方式显示。
引号
因为我们可以在 Go 中使用反引号 (`) 或双引号 ("),所以通过在由反引号括起来的字符串中使用双引号来在字符串中嵌入引号很简单:
`Sammy says, "Hello!"`
或者,要使用反引号,您可以将字符串括在双引号中:
【Go语言基础】Go 中的 Strings 包简介
介绍
Go 的字符串包有几个函数可用于处理字符串数据类型。这些函数让我们可以轻松地修改和操作字符串。我们可以将函数视为我们对代码元素执行的操作。内置函数是那些在 Go 编程语言中定义并且可供我们随时使用的函数。
在本教程中,我们将回顾几个可用于在 Go 中处理字符串的不同函数。
使字符串大写和小写
函数 strings.ToUpper 和 strings.ToLower 将返回一个字符串,其中原始字符串的所有字母都转换为大写或小写字母。因为字符串是不可变的数据类型,所以返回的字符串将是一个新字符串。字符串中的任何非字母字符都不会更改。
要将字符串“Sammy Shark”全部转换为大写,您可以使用 strings.ToUpper 函数:
ss := "Sammy Shark" fmt.Println(strings.ToUpper(ss)) Output SAMMY SHARK
要转换为小写:
fmt.Println(strings.ToLower(ss))
Output
sammy shark
【Go语言开发】如何在 Go 中定义和调用函数
介绍
函数是一段代码,一旦定义,就可以重用。函数用于通过将代码分解为可在整个程序中多次使用的小型、可理解的任务来使您的代码更易于理解。
Go 附带了一个强大的标准库,其中包含许多预定义的函数。您可能已经从 fmt 包中熟悉的是:
- fmt.Println() 会将对象打印到标准输出(很可能是您的终端)。
- fmt.Printf() 这将允许您格式化打印输出。
函数名称包括括号,并且可能包括参数。
在本教程中,我们将介绍如何定义您自己的函数以在您的编码项目中使用。
定义函数
让我们从经典的“Hello, World!”开始。程序化成一个函数。
我们将在我们选择的文本编辑器中创建一个新的文本文件,并调用程序 hello.go。然后,我们将定义函数。
函数是使用 func 关键字定义的。然后是您选择的名称和一组括号,其中包含函数将采用的任何参数(它们可以为空)。函数代码行用大括号 {} 括起来。
在这种情况下,我们将定义一个名为 hello() 的函数:
hello.go
【Go语言开发】如何在 Go 中使用可变参数函数
介绍
可变参数函数是接受零、一个或多个值作为单个参数的函数。 虽然可变参数函数并不常见,但它们可用于使您的代码更清晰、更具可读性。
可变参数函数比看起来更常见。 最常见的是 fmt 包中的 Println 函数。
func Println(a ...interface{}) (n int, err error)
带有以一组省略号 (...) 开头的参数的函数被视为可变参数函数。 省略号表示提供的参数可以是零、一个或多个值。 对于 fmt.Println 包,它声明参数 a 是可变参数。
让我们创建一个使用 fmt.Println 函数并传入零个、一个或多个值的程序:
print.go
【Go语言高级开发】使用构建标签的自定义 Go 二进制文件
介绍
在 Go 中,构建标记或构建约束是添加到一段代码的标识符,用于确定在构建过程中何时应将文件包含在包中。这允许您从相同的源代码构建不同版本的 Go 应用程序,并以快速且有条理的方式在它们之间切换。许多开发人员使用构建标签来改进构建跨平台兼容应用程序的工作流程,例如需要更改代码以解决不同操作系统之间差异的程序。构建标签还用于集成测试,允许您在集成代码和带有模拟服务或存根的代码之间快速切换,以及应用程序中不同级别的功能集。
让我们以不同客户功能集的问题为例。在编写某些应用程序时,您可能希望控制在二进制文件中包含哪些功能,例如提供 Free、Pro 和 Enterprise 级别的应用程序。随着客户在这些应用程序中提高订阅级别,更多功能将解锁并可用。要解决此问题,您可以维护单独的项目并尝试通过使用 import 语句使它们彼此同步。虽然这种方法可行,但随着时间的推移,它会变得乏味且容易出错。另一种方法是使用构建标签。
在本文中,您将使用 Go 中的构建标签生成不同的可执行二进制文件,这些二进制文件提供示例应用程序的免费、专业和企业功能集。每个都有一组不同的可用功能,免费版本是默认设置。
先决条件
要遵循本文中的示例,您将需要:
【Go语言开发】在 Go 中定义Structs (结构)
介绍
围绕具体细节构建抽象是编程语言可以为开发人员提供的最大工具。结构允许 Go 开发人员描述 Go 程序运行的世界。结构体允许我们讨论地址,而不是推理描述街道、城市或邮政编码的字符串。在我们努力告诉未来的开发人员(包括我们自己)哪些数据对我们的 Go 程序很重要以及未来的代码应该如何适当地使用这些数据时,它们充当了文档的天然纽带。结构可以以几种不同的方式定义和使用。在本教程中,我们将了解这些技术中的每一种。
定义结构
结构就像您可能用来报税的纸质表格一样工作。纸质表格可能包含文本信息字段,例如您的名字和姓氏。除了文本字段,表单可能还有复选框来指示布尔值,例如“已婚”或“单身”,或用于出生日期的日期字段。类似地,结构将不同的数据块收集在一起,并将它们组织在不同的字段名称下。当您使用新结构初始化变量时,就好像您已经复印了一个表格并准备好填写。
要创建一个新结构,你必须首先给 Go 一个蓝图,描述结构包含的字段。此结构定义通常以关键字类型开头,后跟结构名称。在此之后,使用 struct 关键字后跟一对大括号 {},您可以在其中声明 struct 将包含的字段。一旦定义了结构,就可以声明使用该结构定义的变量。这个例子定义了一个结构并使用它:
【Go语言开发】在 Go 中定义方法
介绍
函数允许您将逻辑组织成可重复的过程,每次运行时可以使用不同的参数。 在定义函数的过程中,您经常会发现多个函数每次都可能对同一条数据进行操作。 Go 识别这种模式并允许您定义称为方法的特殊函数,其目的是对某种特定类型的实例进行操作,称为接收器。 向类型添加方法使您不仅可以传达数据是什么,还可以传达应该如何使用该数据。
定义一个方法
定义方法的语法类似于定义函数的语法。 唯一的区别是在 func 关键字之后添加了一个额外的参数,用于指定方法的接收者。 接收者是您希望在其上定义方法的类型的声明。 以下示例在结构类型上定义了一个方法: