Menu
CoddyTech

基础联系人列表

本课属于 Coddy GO 学习旅程的“逻辑与流程”单元。第 66 课,共 68 课。

challenge icon

挑战

简单

创建一个联系人管理系统,演示结构体、切片和函数如何协同工作,以整理和显示联系人信息。这个挑战将测试你定义自定义数据结构、管理数据集合以及编写函数来操作数据的能力。

你会收到两个输入:

  • 一个包含联系人信息的字符串,格式为 "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")

你的任务是:

  1. 定义一个 Contact 结构体,包含三个字符串字段:Name、Phone 和 Email
  2. 创建一个名为 addContact 的函数,接收一个 Contact 结构体切片和一个新的 Contact,然后返回添加了该联系人的新切片
  3. 创建一个名为 displayContacts 的函数,接收一个 Contact 结构体切片,并打印每个联系人的信息
  4. 通过按逗号拆分第一个输入,获取单个联系人条目
  5. 对于每个联系人条目,按冒号拆分以提取姓名、电话和电子邮件
  6. 根据解析的数据创建 Contact 结构体,并将它们存储在切片中
  7. 通过按冒号拆分第二个输入,解析并创建一个新联系人
  8. 显示应用程序标题:"=== CONTACT MANAGEMENT SYSTEM ==="
  9. 使用你的 displayContacts 函数显示初始联系人,并显示标题:"Initial contact list:"
  10. 显示要添加的新联系人:"Adding new contact: [name] ([phone]) - [email]"
  11. 使用你的 addContact 函数将新联系人添加到切片中
  12. 使用你的 displayContacts 函数显示更新后的联系人,并显示标题:"Updated contact list:"
  13. 显示联系人统计信息:
    • "=== CONTACT STATISTICS ==="
    • "Total contacts: [number_of_contacts]"
    • "Contacts added this session: 1"
  14. 显示完成消息:"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 在线编译器