基础联系人列表
本课属于 Coddy GO 学习旅程的“逻辑与流程”单元。第 66 课,共 68 课。
挑战
简单创建一个联系人管理系统,演示结构体、切片和函数如何协同工作,以整理和显示联系人信息。这个挑战将测试你定义自定义数据结构、管理数据集合以及编写函数来操作数据的能力。
你会收到两个输入:
- 一个包含联系人信息的字符串,格式为
"name1:phone1:email1,name2:phone2:email2,name3:phone3:email3"(例如,"Alice Johnson:555-0123:alice@email.com,Bob Smith:555-0456:bob@email.com,Carol Davis:555-0789:carol@email.com") - 一个包含要添加的新联系人的字符串,格式为
"name:phone:email"(例如,"David Wilson:555-0321:david@email.com")
你的任务是:
- 定义一个
Contact结构体,包含三个字符串字段:Name、Phone和Email - 创建一个名为
addContact的函数,接收一个Contact结构体切片和一个新的Contact,然后返回添加了该联系人的新切片 - 创建一个名为
displayContacts的函数,接收一个Contact结构体切片,并打印每个联系人的信息 - 通过按逗号拆分第一个输入,获取单个联系人条目
- 对于每个联系人条目,按冒号拆分以提取姓名、电话和电子邮件
- 根据解析的数据创建
Contact结构体,并将它们存储在切片中 - 通过按冒号拆分第二个输入,解析并创建一个新联系人
- 显示应用程序标题:
"=== CONTACT MANAGEMENT SYSTEM ===" - 使用你的
displayContacts函数显示初始联系人,并显示标题:"Initial contact list:" - 显示要添加的新联系人:
"Adding new contact: [name] ([phone]) - [email]" - 使用你的
addContact函数将新联系人添加到切片中 - 使用你的
displayContacts函数显示更新后的联系人,并显示标题:"Updated contact list:" - 显示联系人统计信息:
"=== CONTACT STATISTICS ===""Total contacts: [number_of_contacts]""Contacts added this session: 1"
- 显示完成消息:
"Contact management operations completed successfully"
displayContacts 函数应按以下格式打印每个联系人:"[index]. [name] - Phone: [phone], Email: [email]",其中 index 从 1 开始。
使用 strings 包拆分输入字符串,并使用 fmt 包输出格式化内容。这个挑战将演示如何结合结构体来整理数据、使用切片存储集合,以及使用函数组织代码。这些都是 Go 编程中常用的基础模式。
亲手试试
package main
import (
"bufio"
"fmt"
"os"
"strings"
)
// TODO: 在这里定义你的 Contact 结构体
// TODO: 在这里实现 addContact 函数
// TODO: 在这里实现 displayContacts 函数
func main() {
// 使用 bufio.Scanner 读取输入,以正确处理姓名中的空格
scanner := bufio.NewScanner(os.Stdin)
scanner.Scan()
contactsInput := scanner.Text()
scanner.Scan()
newContactInput := scanner.Text()
// TODO: 在下方编写代码
// 解析联系人输入并创建 Contact 结构体
// 访问 parts 切片前,记得检查它是否有足够的元素
// 解析新联系人的输入
// 显示应用程序标题
// 显示初始联系人列表
// 添加新联系人
// 显示更新后的联系人列表
// 显示统计信息
// 显示完成消息
}逻辑与流程中的所有课
自己练习: Go 在线编译器