让我们深入探索高级数据操作和格式化技术。
full lessons here👇:
https://programmerscareer.com/zh-cn/golang-basic-skill/
由AI生成,可能有错误,仅供参考
Topic 1.1: Golang 中的时间、时钟和 epoch
Golang 中,我们使用 time
包来处理日期和时间。这包提供了一个 Time
类型,让我们可以对日期和时间进行各种操作。
现在,你可能会问,什么是“epoch time”?Epoch 或 Unix 时间是一种描述时间点的系统。它是自 Unix epoch(1970 年 1 月 1 日 00:00:00 UTC)以来经过的秒数,减去跃秒。
让我们快速查看一个示例:
1 | package main |
在上面的代码中,time.Now()
函数返回当前日期和时间,而 Unix()
函数返回本地时间的秒数自 1970 年 1 月 1 日 UTC。
Topic 1.2: Golang 中的时间格式化和解析
Golang 使用独特的方法来格式化和解析时间。GoLang 的 layout 字符串实际上是 Unix 开发者们在 AT&T 选择 epoch 开始的时间(即零时,隐含地 01/02 03:04:05PM '06 -0700
)。
如果这看起来有些不寻常,不要担心。你会习惯它。
为了格式化时间,我们使用 Time.Format(layout string) string
函数,而为了解析时间,我们使用 time.Parse(layout, value string) (Time, error)
函数。
下面是一个解释示例:
1 | package main |
在上面的示例中,我们将当前日期和时间格式化为 DD-MMM-YYYY
和 DD-MMM-YYYY HH:MI:SS
格式,然后解析一个日期字符串。
事情会变得更清楚。
Topic 1.3: Golang 中的随机数
生成随机数是一种常见的任务。在 GoLang 中,我们使用 math/rand
包来实现这个目的。
下面是一个示例:
1 | package main |
在这个代码中,我们首先种子随机数生成器,以确保每次程序运行时都生成不同的序列。
然后,我们使用 rand.Intn
函数生成一个随机整数。
Topic 1.4: Golang 中的数字解析
Go 提供了内置支持来从字符串中解析数字。我们可以使用 strconv
包中的 Atoi
函数解析整数和 ParseFloat
函数解析浮点数。
下面是一个示例:
1 | package main |
Atoi
函数尝试将字符串转换为整数。如果成功,它返回整数和 nil 错误。如果失败,它返回零和描述问题的错误。
类似地,ParseFloat
函数尝试将字符串转换为浮点数。第二个参数表示浮点类型的位大小。
需要记住的是,错误处理是解析时非常重要的一方面。
Topic 1.5: GoLang 中的 URL 解析
GoLang 使用 net/url
包来解析 URL。url.Parse()
函数用于解析 URL 并返回一个指向 URL
结构体的指针。如果成功,返回的 URL 对象的 Host
、Path
、RawQuery
等字段提供对 URL 的各种部分的访问。
示例
1 | package main |
在这个示例中,URL.Parse()
函数解析提供的字符串 URL 并输出结构体。
Working with URLs
在许多应用程序中,处理 URLs 是非常常见的,因此学习这方面是很有必要的。
Topic 1.6: GoLang 中的 SHA256 哈希
GoLang 使用 crypto/sha256
包来实现 SHA256 哈希算法规范,这些规范根据 FIPS 180-4 规定。
哈希函数将任意大小的数据映射到固定大小。哈希函数是确定性的,这意味着它对相同输入始终会产生相同输出。
SHA (Secure Hash Algorithm) 是一系列加密哈希函数之一。加密哈希是一种文本或数据文件的签名。SHA256 算法生成一个几乎唯一的、固定大小 256 位(32 字节)哈希。
示例
1 | package main |
在上面的示例中,我们首先创建一个新的哈希对象。然后,我们将输入字符串写入它,并最终调用其 Sum
方法以获取 SHA256 检查和字节。 %x
指令在 Printf
中格式化字节 slice 为十六进制字符串,这给我们提供了可读的哈希字符串。
Hashing
哈希主要用于比较和存储敏感数据,如密码,并确保数据完整性。
Topic 1.7: GoLang 中的 Base64 编码
Base64 编码方案通常在需要将二进制数据存储和传输到文本媒体时使用。这可以确保数据在传输过程中保持不变和无损。
GoLang 使用 encoding/base64
包提供编码/解码函数。
示例
1 | package main |
在这个示例中,我们将输入字符串编码为 Base64,并将其输出到控制台。
Base64 编码
Base64 编码广泛应用于电子邮件中的 MIME、存储复杂数据的 XML 或 JSON 中,以及 web 应用程序中的用户凭证存储。
Topic 1.8: Review and Practice
对于 Time、Epoch、Time Formatting 和 Parsing、Random Numbers、Number Parsing 和 URL Parsing 等主题,我有许多练习可以让你实践:
- 创建一个 Go 程序,打印当前时间的格式为“Mon Jan 2 15:04:05 MST 2006”。
- 写一个 Go 程序,将用户提供的日期和时间字符串转换为 Epoch 时间。
- 创建一个 Go 脚本,生成 ’n’ 个随机数,其中 ’n’ 可以是任何整数。
- 写一个函数,在 Go 中将字符串解析成一组整数。
- 创建一个 Go 程序,将 URL 解析并输出各种组件(scheme、domain、path 等)。
- 对于 SHA256 哈希和 Base64 编码主题:
- 写一个 Go 函数,计算输入字符串的 SHA256 哈希,并将其返回为 Base64 格式。
- 创建一个 Go 程序,将输入字符串编码为 Base64,解码它,然后验证解码后的字符串是否与原始输入匹配。
记住,这些练习旨在帮助你熟悉这些概念和它们在 Go 中的实现。不能等待看到你的解决方案!
English post: https://programmerscareer.com/go-basic-12/
作者:Wesley Wei – Twitter Wesley Wei – Medium
注意:本文为作者原创,转载请注明出处。
评论