שפת התכנות Go התפתחה רבות מאז שפורסמה לראשונה ב-2009. Go 1.18 הייתה מהדורה שהייתה צפויה לה בשל תמיכתה בגנריות ובעדכונים חשובים רבים אחרים.

Go הוציאה גרסה 1.18 במרץ 2022. להלן הסבר נמוך על השינויים המשמעותיים ביותר.

תמיכה בגנריות

תכנות גנרי מאפשר לך לכתוב פונקציות שיכולות לקבל ולהחזיר סוגים גמישים יותר.

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

funcהדפס כל דבר[כל אחד](דָבָרט) {
fmt.הדפסה(דָבָר)
}

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

יְבוּא "golang.org/x/exp/constraints"

funcמקסימום[אילוצים T. הוזמן](קֶלֶט[]ט) (מקסימוםט) {
עבור _, v := קלט טווח {
אם v > מקסימום {
מקסימום = v
}
}

לַחֲזוֹר מקסימום
}

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

instagram viewer

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

בדיקת פאז

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

ה בדיקה החבילה מציגה fuzzing ב-1.18, אז כדי להגדיר fuzz, עליך לייבא אותו מהספרייה הסטנדרטית:

יְבוּא "בדיקה"

לאחר ייבוא ​​ה בדיקה חבילה, אתה יכול להעביר מזהה סוג *בדיקה. ו לפונקציית הבדיקה.

functestFunc(ו *בדיקה. ו) {
// הקוד שלך
}

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

עבור לתמיכה בסביבת העבודה

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

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

הפקודה ליצירת סביבות עבודה היא:

$ לך לעבוד <פקודה>

להשתמש ב עֲבוֹדָה פקודה עם פקודות משנה כמו:

  • init ← יוצר סביבת עבודה בספרייה שצוינה.
  • להשתמש → מוסיף מודול חדש ל-go.work, קובץ סביבת העבודה של go.
  • לַעֲרוֹך ← עורך את קובץ סביבת העבודה go.
  • סינכרון → מסנכרן תלות מרשימת הבנייה למודולי סביבת העבודה.

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

שיפורי ביצועים

ללכת גרסה 1.18 תומכת כעת ב-ARM64 Apple M1 וב-64 סיביות PowerPC במוסכמות השיחות של ABI. זה מביא לעלייה של למעלה מ-10% בביצועי המעבד למשתמשים במכשירים אלה.

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

ה לך לבנות הפקודה, יחד עם פקודות קשורות אחרות, תומכת ב- -אסאן flag, התומך בפעילות הדדית עם C/C++. זה יעזור למפתחי Go להשתמש בתוכניות Go עם תוכניות C ו-C++.

עדכונים חשובים נוספים

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

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

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

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

ל- Go 1.18 יש מספר תוספות מגוונות

באמצעות Go 1.18, כעת תוכל לכתוב קוד גנרי, לבדוק ביעילות באמצעות fuzzing ולעבור בין מודולי Go באמצעות סביבות עבודה. אתה יכול אפילו לכתוב קוד שעובד בשילוב עם תוכניות C ו-C++.

האם כדאי ללמוד גולאנג היום?

קרא הבא

לַחֲלוֹקצִיוּץלַחֲלוֹקאימייל

נושאים קשורים

  • תִכנוּת
  • תִכנוּת
  • שפות תכנות

על הסופר

צוות MUO

הירשם לניוזלטר שלנו

הצטרף לניוזלטר שלנו לקבלת טיפים טכניים, ביקורות, ספרים אלקטרוניים בחינם ומבצעים בלעדיים!

לחץ כאן כדי להירשם