כיצד להשתמש בהצהרה בחר בגולאנג?

Kyzd Lhstms Bhzhrh Bhr Bgwl Ng



א בחר משפט ב-Golang מאפשר למפתחים לסנכרן ולתקשר בין השגרות, הערוצים וזרמי הנתונים של Go. זה מאפשר לתוכנית Go להמתין במספר פעולות של ערוצים בבת אחת ולבצע את הפעולה הראשונה שמוכנה.

במאמר זה נבדוק כיצד להשתמש בחר משפט ב-Golang וספק דוגמאות שיעזרו לך להשיג מקביליות, מקבילות וסנכרון בתוכניות Go.

כיצד להשתמש בהצהרה בחר בגולאנג?

בדומה להצהרת המתג, ה- בחר משפט מאפשר לנו לבחור ולהפעיל ביטוי אחד מבין ביטויים רבים, אך ההבדל העיקרי ביניהם בחר ומתג הוא שה בחר משפט מתפקד על עיקרון ההמתנה, כלומר בחר משפט לא יבוצע עד שהתקשורת תושלם.







כאן, תקשורת מתייחסת לשליחה וקבלה של נתונים בכל ערוץ נתון. כשהתקשורת הושלמה, מתבצעת הבדיקה הבאה, המאפשרת לנו לראות שהצהרת הבחירה של שפת Go תלויה לחלוטין בערוץ.



תחביר עבור הצהרת בחר

התחביר הפשוט המשמש עבור בחר משפט שימוש בשפת Go מוצג להלן:



בחר {
מקרה ערוץ 1 :
// קוד לביצוע כאשר channel_1 מוכן
מקרה ערוץ_2 :
// קוד לביצוע כאשר channel_2 מוכן
מקרה ערוץ_3 :
// קוד לביצוע כאשר channel_3 מוכן
מקרה ערוץ_4 :
// קוד לביצוע כאשר channel_4 מוכן
בְּרִירַת מֶחדָל :
// קוד לביצוע אם אף אחד מהערוצים אינו מוכן
}

כאן:





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

כיצד ליצור ערוץ בגולנג

כדי ליצור ערוץ ב-Go, המשתמשים יכולים להשתמש בפונקציית make ואחריו צ'אן מילת מפתח וציין את סוג הערוץ, שיכול להיות int, מחרוזת או אחרים.

ch := עשה ( סוג צ'אן )

יישם הצהרת בחירה בגולאנג

כאן, נספק מספר דוגמאות שיעזרו לך ללמוד את היסודות של השימוש ב- בחר משפט בגולנג.



דוגמה 1

הדוגמה הבאה של בחר משפט מדגים כיצד הוא מתפקד כאשר שני הערוצים מוכנים לביצוע.

החבילה הראשית

יְבוּא 'fmt'

func main ( ) {

על אחד := עשה ( צ'אן int )

str := עשה ( מחרוזת צ'אן )

לך chan_num ( על אחד )

עבור ל-chan_str ( str )

בחר {

מקרה Ch1 := <- על אחד :

fmt. Println ( 'נתוני ערוץ:' , Ch1 )

מקרה Ch2 := <- str :

fmt. Println ( 'נתוני ערוץ:' , Ch2 )

}

}

func chan_num ( מספר צ'אן int ) {

על אחד <- 67

}

func chan_str ( מחרוזת str chan ) {

str <- 'לינוקס'

}

בדוגמה לעיל, יצרנו שני ערוצים, על אחד, ו str והשתמשנו בפונקציות Go chan_num() לשלוח נתונים לערוץ מספר ו chan_str() כדי לשלוח נתונים לערוץ str. מכיוון שהתוכנית מכילה שני ערוצים שונים, השתמשנו ב- בחר משפט להוציא להורג אחד מהם.

מקרה Ch1 קורא את הערך מתוך ערוץ מספר ומציג אותו. באופן דומה, מקרה Ch2 מחזירה את הערך מה- str עָרוּץ. התוכנית לעיל מחזירה את הפלט של הערוץ שמוכן לשימוש. תְפוּקָה

דוגמה 2

אם אתה רוצה להוסיף השהיה לערוץ ולהחזיר את הפלט של ערוץ אחר, אתה יכול להשתמש ב- זמן שינה() פונקציה בערוץ מוגדר. זה מאפשר לך להדפיס את הפלט של הערוץ השני לקונסולה. הנה דוגמה למקרה כזה.

החבילה הראשית

יְבוּא (

'fmt'

'זְמַן'

)

func main ( ) {

על אחד := עשה ( צ'אן int )

str := עשה ( מחרוזת צ'אן )

לך chan_num ( על אחד )

עבור ל-chan_str ( str )

בחר {

מקרה Ch1 := <- על אחד :

fmt. Println ( 'נתוני ערוץ:' , Ch1 )

מקרה Ch2 := <- str :

fmt. Println ( 'נתוני ערוץ:' , Ch2 )

}

}

func chan_num ( מספר צ'אן int ) {

על אחד <- 67

}

func chan_str ( מחרוזת str chan ) {

זְמַן . לִישׁוֹן ( 5 * זְמַן . שְׁנִיָה )

str <- 'לינוקס'

}

בקוד הנתון לעיל, השתמשנו ב- זמן שינה() לתפקד בתוך chan_str() פוּנקצִיָה. רק ערוץ num מוכן לביצוע במשך 5 השניות הראשונות. כתוצאה מכך, ה בחר משפט מפעיל מקרה Ch1 .

תְפוּקָה

הערה: ניתן להוסיף השהייה לשני הערוצים כדי לעכב את ביצוע הערוצים.

סיכום

ה בחר משפט in Go מאפשר בחירה וביצוע של ביטוי אחד מתוך ביטויים רבים תוך שימוש בעקרון wait, שבו ההצהרה לא תתבצע עד להשלמת התקשורת. ההנחיות הנ'ל כוללות בחר משפט תחביר בסיסי ודוגמאות.