Menu
Coddy logo textTech

בדיקת קיומו של מפתח

שיעור 20 מתוך 21 בקורס פרוסות ומפות ב-GoLang של Coddy.

עד לנקודה זו למדנו איך להוסיף ערכים למפות ולמחוק אותן. בשיעור הזה נלמד איך לבדוק אם מפה מכילה מפתח מסוים. אפשר לעשות זאת באמצעות התנאי if, כפי שמוצג בדוגמה הבאה:

var books = map[string]int{
    "Golang":  1,
    "Python": 2,
    "Rust":  3,
}
if v, k := books["Python"]; k{
    fmt.Println(v)
}

בדוגמה הזו יש לנו מפה שנקראת books. באמצעות if, אנחנו בודקים אם המפה מכילה את המפתח "Python". אם כן, אנחנו מדפיסים את הערך המשויך אליו. בדוגמה שלנו, התוצאה תהיה 2.

ה-k ב-<strong>books["Python"]; k{</strong> מכיל ערך בוליאני, true או false. אם המפתח קיים, הוא יחזיר true, ואפשר לבדוק זאת על ידי הדפסתו למסך:

if v, k := books["Python"]; k{
    fmt.Println(k,v)
}

הפלט יהיה:

true 1

ל-Go יש גרסה פשוטה יותר של זה, שאפשר לכתוב כך:

v, k := books ["a"]
fmt.Println(v, k)

הפעולה תחזיר את הערך v ואת k כערך בוליאני true (אם המפתח קיים) או false (אם המפתח לא קיים):

0 false

במקרה שלנו, a לא נמצאת במפה, ולכן מוחזרים 0 ו-false.

challenge icon

אתגר

קל

כתבו תוכנית שמקבלת מהמשתמש קלט כמפתח ובודקת אם המפתח הזה קיים במפה הנתונה:

  • אם הוא קיים, הדפיסו את ההודעה <strong>"{key} exists with a value of {value}"</strong>.
    {key} הוא המפתח שהוזן על ידי המשתמש, ו-{value} הוא הערך המתאים במפה.
  • אם הוא לא קיים, הדפיסו <strong>"{key} does not exist in the map"</strong>.

נסו בעצמכם

package main

import "fmt"


func main() {
	// קלטו מהמשתמש ערך שישמש כמפתח. אין לשנות את זה!
	var key string
	fmt.Scanln(&key)
	// מפת הספרים. אין לשנות את זה!
	books := map[string]int{
		"Golang": 1,
		"Python": 2,
		"Rust":   3,
		"Lua": 4,
		"Java": 5,
	}

	// בדקו אם המפתח קיים במפה

}

כל השיעורים ביחידה פרוסות ומפות ב-GoLang

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