基本の連絡先リスト
CoddyのGOジャーニー「論理とフロー」セクションの一部 — レッスン 66/68。
チャレンジ
簡単構造体、スライス、および関数がどのように連携して連絡先情報を整理し表示するかを実演する連絡先管理システムを作成してください。このチャレンジでは、カスタムデータ構造の定義、データのコレクションの管理、およびそのデータを操作するための関数の実装能力が試されます。
2つの入力を受け取ります:
"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")
あなたのタスクは以下の通りです:
- 3つの文字列フィールド
Name、Phone、およびEmailを持つContact構造体を定義します。 Contact構造体のスライスと新しいContactを受け取り、連絡先が追加された新しいスライスを返すaddContactという名前の関数を作成します。Contact構造体のスライスを受け取り、各連絡先の情報を表示するdisplayContactsという名前の関数を作成します。- 最初の入力をカンマで分割して、個々の連絡先エントリを取得するように解析します。
- 各連絡先エントリについて、コロンで分割して名前、電話番号、メールアドレスを抽出します。
- 解析されたデータから
Contact構造体を作成し、それらをスライスに保存します。 - 2番目の入力をコロンで分割して解析し、新しい連絡先を作成します。
- アプリケーションヘッダーを表示します:
"=== 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 スライスに十分な要素があるか確認することを忘れないでください
// 新しい連絡先の入力を解析します
// アプリケーションのヘッダーを表示します
// 初期の連絡先を表示します
// 新しい連絡先を追加します
// 更新された連絡先を表示します
// 統計を表示します
// 完了メッセージを表示します
}