【Go语言高级开发】使用 Git Hooks 改进你的 Go 开发工作流程
Git hooks 是一种非常强大的改进开发工作流程的方法,无需记住运行额外的脚本或执行额外的任务。在本文中,我们将看看如何在项目存储库中定义自己的简单 git 钩子,它可以自动执行 linting + 格式化 Go 代码的任务。
这个相当简单的示例应该让您了解如何利用 git hooks 来实现您自己的狡猾计划。
现实生活中的例子
这方面的一个例子来自我当前的一个项目,其中团队必须在将机密文件推送到项目的存储库之前对其进行加密。加密文件是一件简单的事情,但由于我们正在处理的加密文件的数量,记住加密每个已更改的文件成为一项挑战,而且我们经常会运行我们的项目并挠头而我们试图弄清楚为什么它没有发现新的秘密。
解决方案
当试图解决这个问题时,我们可以使用的工具相当有限,并且不想使用会影响团队中有自己偏好的人的当前开发流程的东西。
【Go语言容器化】Go 多阶段 Docker 教程
欢迎各位码农!在本教程中,我们将研究多阶段 Docker 镜像以及如何使用它们来最小化生产 Go 应用程序所需的容器大小。
在本教程结束时,我们将涵盖以下概念:
- 什么是多阶段 Dockerfile。
- 我们如何为我们的 Go 应用程序构建简单的多阶段 Dockerfile
Docker 是一种强大的容器化技术,可用于轻松启动隔离且可重现的环境,在其中构建和运行我们的应用程序。它越来越受欢迎,越来越多的云服务提供商提供本地 docker 支持,让您可以轻松部署容器化应用程序,让全世界看到!
注意 - 本教程是我之前的 Go + Docker 教程的后续,可以在此处找到:使用 Docker 容器化您的 Go 应用程序
多阶段 Dockerfile 的需求是什么?
为了了解多阶段 Dockerfile 为何有用,我们将创建一个简单的 Dockerfile,它具有一个阶段来构建和运行我们的应用程序,另一个 Dockerfile 具有构建器阶段和生产阶段。
一旦我们创建了这两个不同的 Dockerfile,我们应该能够比较它们,并希望自己看到多阶段 Dockerfile 比它们更简单的对应物更受欢迎!
【Go语言中级开发】使用 AES 进行加密和解密 - 教程
目标
在本教程结束时,您将能够……
- 使用 AES 加密文本 - Go 中的高级加密标准
- 然后,我们将研究将此加密消息写入文件
- 最后,我们将看看如何使用共享密钥解密此消息
由此,您应该能够构建自己的简单加密系统,该系统可以执行各种操作,例如加密文件系统上的文件并使用只有您知道的密码来保护它们,或者为您正在工作的系统的各个部分添加简单加密上。
介绍
我们将从查看 AES 或高级加密标准开始,因为这是我们将用于加密和解密 Go 程序中的信息的标准。
然后我们将构建一个非常简单的加密程序,它将从命令行接收一个密码短语,并将其与 AES 结合使用来加密一段文本。
完成此操作后,我们将创建一个对应程序,该程序将使用我们用于加密文本的相同密码来解密这段文本。
AES - 高级加密标准
因此,AES 或高级加密标准是一种对称密钥加密算法,最初由两位比利时密码学家 Joan Daemen 和 Vincent Rijmen 开发。
【Go语言高级开发】Go 指针教程
在本教程中,我们将介绍 Go 中的指针以及如何在自己的 Go 程序中使用它们。我们将介绍最佳实践,并介绍一些最常见的指针用例。
在本教程结束时,您将对指针以及如何使用它们有一个扎实的理解。
介绍
在 Go 中,当我们调用一个函数并将一堆参数传递给该函数时,该语言会创建参数的副本,然后在所述函数中使用这些副本。例如:
main.go
package main
import "fmt"
func myTestFunc(a int) {
a += 3
fmt.Println(a)
}
func main() {
a := 2
myTestFunc(a)
fmt.Println(a) // prints out 2
}
在上面的代码中,myTestFunc 接收一个整数变量,并对其进行复制,以便在函数体的上下文中使用。我们对 myTestFunc 中的 a 所做的任何更改都只会保留在 myTestFunc 函数的主体中。
现在,假设我们想调用 myTestFunc 并更新原来的 a 变量并将 3 添加到它?
【Go语言开发】Go Tickers 教程
在本教程中,我们将研究 Go 中的代码以及如何在自己的 Go 应用程序中有效地使用代码。
当您需要在给定的时间间隔内重复执行某项操作时,Tickers 非常有用,我们可以将 Tickers 与 goroutines 结合使用,以便在我们的应用程序后台运行这些任务。
行情(Tickers )与计时器
在我们深入研究之前,了解代码和计时器之间的区别很有用。
- Tickers - 这些非常适合重复任务
- 计时器(
Timers
) - 这些用于一次性任务
一个简单的例子
让我们从一个非常简单的开始,我们每隔 5 秒重复运行一个简单的 fmt.Println 语句。
main.go
【Go语言高级开发】Golang Goroutines 的并发性
现在,Go 是一种令人难以置信的高性能语言,它具有许多强大的功能,可让您构建令人难以置信的快速应用程序。通过为我们提供这些 goroutine 和通道,它重新定义了构建并发程序的意义。
使用 goroutine 是一种非常快速的方法,可以将顺序程序转换为并发程序,而无需担心创建线程或线程池之类的事情。但是,与所有并发编程一样,这会带来一些危险,在你跑来跑去在所有函数调用前面加上 go 关键字之前必须考虑这些危险。
在本教程中,我们将研究如何在基于 Go 的程序中使用 goroutine,并随后提高程序执行的性能。
目标
在本教程结束时,您应该:
- 对 goroutine 是什么以及如何使用它们来提高应用程序的性能有深入的了解
- 知道如何创建和使用匿名 goroutine。
- 了解使您的应用程序并发的一些危险。
视频教程
如果您愿意,本教程还提供视频格式。如果您想支持我的工作,请考虑喜欢并订阅我的 YouTube 频道。
https://youtu.be/ARHXmR0_MGY
【Go语言数据库开发】Golang ORM 教程
在本教程中,我们将了解如何使用 Go-ORM 或 GORM 以简单的方式与 sqlite3 数据库进行交互。
ORM 或对象关系管理器几乎充当我们开发人员和我们底层数据库技术之间的中介。 它们让我们基本上可以像往常一样使用对象,然后保存这些对象,而无需编写复杂的 SQL 语句。
在您不希望使用 SQL 但需要数据库的情况下,它们有效地降低了我们代码库的复杂性。
视频教程
https://youtu.be/VAGodyl84OY
安装
为了安装 jinzhu/gorm,您必须执行以下 go get 命令:
go get -u github.com/jinzhu/gorm
完成此操作后,您应该能够将 jinzhu/gorm 导入到任何基于 Go 的项目中。
一个简单的例子
例如,假设您想编写一个 go REST API,当某个 API 端点被命中时,它将新用户及其电子邮件保存到数据库中。
我们可以像这样在 go 结构中描述我们的用户:
【Go语言开发】如何在 CentOS 7 上安装 Go 1.7
介绍
Go,通常被称为golang,是谷歌开发的一种开源编程语言。它采用极简主义的开发方法,可以轻松构建简单、可靠和高效的软件。本教程将指导您下载和安装 Go 1.7,以及编译和执行基本的“Hello, World!”。程序,在 CentOS 7 服务器上。
先决条件
在学习本教程之前,请确保您有一个具有 sudo 权限的常规非 root 用户。您可以从我们的指南 How To Create a Sudo User on CentOS 中了解有关如何设置具有这些权限的用户的更多信息。
第 1 步 – 下载 Go
截至 2016 年 9 月,CentOS 默认存储库中的 golang 软件包不是最新的。因此,我们将直接从 Go 网站手动下载包。确保复制与 64 位架构兼容的最新版本的链接。
首先进入一个可写目录:
cd /tmp
使用 curl 命令和 Go 中的链接下载 tarball:
【Go语言开发】如何在 macOS 上安装 Go 并设置本地编程环境
介绍
Go 是一种在谷歌受挫后诞生的编程语言。开发人员不断地不得不选择一种执行效率高但编译时间长的语言,或者选择一种易于编程但在生产中运行效率低下的语言。 Go 被设计为同时提供所有这三个功能:快速编译、易于编程和生产中的高效执行。
虽然 Go 是一种通用的编程语言,可用于许多不同的编程项目,但它特别适合网络/分布式系统程序,并赢得了“云语言”的美誉。它专注于帮助现代程序员使用一组强大的工具完成更多工作,通过使格式成为语言规范的一部分来消除对格式的争论,以及通过编译为单个二进制文件来简化部署。 Go 易于学习,关键字非常少,这使其成为初学者和经验丰富的开发人员的绝佳选择。
本教程将指导您在本地 macOS 机器上安装 Go 并通过命令行设置编程工作区。
先决条件
您将需要一台具有管理访问权限且连接到 Internet 的 macOS 计算机。
【Go语言开发】如何在 Windows 10 上安装 Go 并设置本地编程环境
介绍
Go 是一种在谷歌受挫后诞生的编程语言。开发人员不断地不得不选择一种执行效率高但编译时间长的语言,或者选择一种易于编程但在生产中运行效率低下的语言。 Go 被设计为同时提供所有这三个功能:快速编译、易于编程和生产中的高效执行。
虽然 Go 是一种通用的编程语言,可用于许多不同的编程项目,但它特别适合网络/分布式系统程序,并赢得了“云语言”的美誉。它专注于帮助现代程序员使用一组强大的工具完成更多工作,通过使格式成为语言规范的一部分来消除对格式的争论,以及通过编译为单个二进制文件来简化部署。 Go 易于学习,关键字非常少,这使其成为初学者和经验丰富的开发人员的绝佳选择。
本教程将指导您在本地 Windows 10 机器上安装 Go 并通过命令行设置编程环境。
先决条件