让我们深入探索高级主题,例如排序算法、模板和数据格式。
full lessons here👇:
https://programmerscareer.com/zh-cn/golang-basic-skill/
由AI生成,可能有错误,仅供参考
1.1 高级排序算法在 Golang 中
要成为 Go 排序的高手,我们需要熟悉 sort
包。sort
包提供了对切片或自定义集合的排序基本操作。
有多种方式可以对不同类型的数据进行排序,例如整数、浮点数和字符串。在下面是一个整数 slice 的排序示例:
1 | package main |
当你运行程序时,你将看到整数排序在升序顺序。
然而,如果你想对复杂类型的集合进行排序或根据自定义顺序进行排序,你需要实现 sort.Interface
在你的数据上。该接口要求三个方法:Len()
, Less()
和 Swap()
。
这只是一个起始点,我们将深入探讨。
1.2 Golang 中的文本模板
Golang 有一个强大的 text/template
包,允许你创建文本模板来生成自定义输出格式。
假设我们有一个 Person 结构体:
1 | type Person struct { |
并创建了一个名为 Alice 的新人,她是 25 岁:
1 | person := Person{ |
我们可以定义一个模板来输出个人信息。下面是一个简单的示例:
1 | const tpl = `{{.Name}} is {{.Age}} years old.` |
当这个程序运行时,它将输出“Alice is 25 years old.”你也可以在模板中使用条件语句和循环,这使得它们非常强大用于生成复杂文本结构!
1.3 高级正则表达式技术
在 Golang 中,我们使用 regexp
包来处理正则表达式。让我们开始查看一些实际示例以获取深入的了解。
首先,让我们检查一个模式是否匹配字符串:
1 | package main |
我们也可以将字符串中的子集替换为其他值:
1 | fmt.Println(r.ReplaceAllString("a peach", "<fruit>")) // prints: a <fruit> |
1.4 在 Golang 中使用 JSON
JSON(JavaScript 对象表示法)可能是互联网上最常见的数据交换格式。Go 的 encoding/json
包提供了对 JSON 数据的功能。
让我们从一个简单示例开始,marshalling 一个 map 到 JSON 数据中。marshalling 是将内存表示转换为可用于存储或传输的数据格式。
1 | package main |
当你运行程序时,你将获得一个 JSON 表示形式的 colors
map。
现在,让我们反向 marshalling 到 JSON:
1 | var colors map[string]string |
当程序运行时,它将打印红色颜色的代码,这是“#ff0000”。
主题:1.5 使用 Golang 中的 XML
与 JSON 一样,XML(eXtensible Markup Language)是另一种常见的数据交换格式。可以将其视为 HTML 的更正式、更加严格版本。
正如 JSON 一样,Go 有标准库支持 XML,通过 encoding/xml
包。
让我们直接进入示例。假设我们有一个 cafe 菜单的 XML 数据:
1 | <menu> |
首先,我们需要定义这个 XML 的结构:
1 | type Dish struct { |
然后,我们可以解析这个 XML:
1 | var menu Menu |
假设我们有以下 Menu
对象:
1 | menu := Menu{ |
并且,我们想生成一个 XML 表示形式的 Menu
对象。我们可以使用 xml.Marshal()
函数。它与 json.Marshal()
函数非常相似:
1 | xmlData, err := xml.Marshal(menu) |
需要注意的是,xml.Marshal()
函数默认不包括头。如果你想包含 <?xml version="1.0" encoding="UTF-8"?>
头,你应该使用 xml.MarshalIndent()
函数:
1 | xmlData, err := xml.MarshalIndent(menu, "", " ") |
主题:1.6 回顾和评估
回顾
让我们回顾一下我们所涵盖的内容:
- 高级排序算法在 Golang 中:我们探索了 Golang 实现排序算法的方式,并讨论了它们的使用。
- 文本模板在 Golang 中:我们学习了文本模板的概念,并了解如何输出自定义文本。
- 高级正则表达式技术:我们深入探索了正则表达式在 Golang 中的实际应用。
- 使用 JSON 在 Golang 中:我们使用 Golang 的 JSON 库,解析、生成和操作 JSON 数据。
- 使用 XML 在 Golang 中:我们设计、解析和实现 XML 数据,类似于对 JSON 数据的处理。
- 实际应用场景:我们讨论了这些高级 Golang 概念的实际应用场景。
评估
- 排序结构评估:给定一个名为
Songs
的结构,它有字段Title
、Artist
和Duration
,编写一个 Go 程序,用于对这些歌曲的标题进行排序,然后根据其持续时间进行排序。 - 模板评估:编写一个 Go 程序,使用文本模板创建个性化的问候语。
- 正则表达式评估:编写一个 Go 程序,使用正则表达式验证字符串是否是有效的电话号码。
- JSON 评估:编写一个 Go 程序,输入一个 JSON 字符串,表示用户的属性
Name
、Email
和Age
,并将其解析到User
结构中。 - XML 评估:编写一个 Go 程序,创建一个名为
Employee
的结构,填充一些数据,然后将其 marshal 到 XML 中。
English post: https://programmerscareer.com/go-basic-11/
作者:Wesley Wei – Twitter Wesley Wei – Medium
注意:本文为作者原创,转载请注明出处。
评论