Menu
Coddy logo textTech

סיכום – ספר אנשי קשר

חלק מהיחידה תכנות מונחה עצמים במסלול ה-GO של Coddy. שיעור 18 מתוך 107.

challenge icon

אתגר

קל

בואו נבנה מערכת לניהול אנשי קשר המשלבת טיפוסים מותאמים אישית, מבנים מקוננים, תגיות למבנים וערכי אפס: כל המושגים שלמדת בפרק הזה.

תארגן את הקוד שלך בשני קבצים:

  • contact.go: הגדר את מודל הנתונים של ספר אנשי הקשר שלך באמצעות טיפוסים מותאמים אישית בעלי משמעות ועיצוב JSON מתאים:
    • צור טיפוסים מותאמים אישית Phone ו-Email המבוססים על string, כדי שהקוד שלך יתעד את עצמו
    • הגדר מבנה Address עם השדות Street,‏ City ו-Country, שלכל אחד מהם תגית JSON מתאימה
    • הגדר מבנה Contact שמכיל את Name (מחרוזת),‏ Phone (הטיפוס Phone שלך),‏ Email (הטיפוס Email שלך) ו-Address (מבנה מקונן). השתמש בתגיות JSON כך שהשדות phone ו-email יושמטו כשהם ריקים
  • main.go: קרא פרטי איש קשר מהקלט, צור מופע של Contact והצג אותו כ-JSON מעוצב. ייתכן שלחלק מאנשי הקשר יהיו פרטים חסרים: תן לערכי האפס ול-omitempty לטפל בכך בצורה תקינה.

הקלט הבא יסופק:

  • שורה 1: שם איש הקשר
  • שורה 2: מספר טלפון (עשוי להיות ריק)
  • שורה 3: כתובת דוא"ל (עשויה להיות ריקה)
  • שורה 4: כתובת רחוב
  • שורה 5: עיר
  • שורה 6: מדינה

השתמש ב-json.MarshalIndent עם שני רווחים להזחה. הדפס את מחרוזת ה-JSON שהתקבלה.

לדוגמה, אם מתקבל איש קשר בשם Alice Smith, ללא טלפון, עם כתובת דוא"ל alice@example.com, כתובת רחוב 123 Main St, עיר Boston ומדינה USA, הפלט שלך אמור להיראות כך:

{
  "name": "Alice Smith",
  "email": "alice@example.com",
  "address": {
    "street": "123 Main St",
    "city": "Boston",
    "country": "USA"
  }
}

שים לב שהשדה phone כלל לא מופיע, מכיוון שהוא היה ריק: זו פעולת תגית ה-omitempty!

נסו בעצמכם

package main

import (
	"bufio"
	"encoding/json"
	"fmt"
	"os"
)

func main() {
	scanner := bufio.NewScanner(os.Stdin)

	// קראו את השם
	scanner.Scan()
	name := scanner.Text()

	// קראו את מספר הטלפון (ייתכן שיהיה ריק)
	scanner.Scan()
	phone := scanner.Text()

	// קראו את כתובת האימייל (ייתכן שתהיה ריקה)
	scanner.Scan()
	email := scanner.Text()

	// קראו את שם הרחוב
	scanner.Scan()
	street := scanner.Text()

	// קראו את שם העיר
	scanner.Scan()
	city := scanner.Text()

	// קראו את שם המדינה
	scanner.Scan()
	country := scanner.Text()

	// TODO: צרו מופע של Contact באמצעות ערכי הקלט
	// השתמשו בטיפוסים המותאמים אישית Phone ו-Email עבור השדות המתאימים
	// צרו את ה-struct המקונן Address עם street, city ו-country

	// TODO: השתמשו ב-json.MarshalIndent כדי להמיר את איש הקשר ל-JSON
	// השתמשו ב-"" כקידומת וב-"  " (שני רווחים) להזחה

	// TODO: הדפיסו את מחרוזת ה-JSON
	_ = name
	_ = phone
	_ = email
	_ = street
	_ = city
	_ = country
}

כל השיעורים ביחידה תכנות מונחה עצמים

תרגלו בעצמכם: קומפיילר Go אונליין