עיצוב הקוד שלך הוא דרך חשובה לשיפור הקריאות, העקביות והשימוש החוזר שלו. קל יותר להבין, לשנות ולתחזק קוד בפורמט נכון.
אחת התכונות הנהדרות של Go היא מוסכמות העיצוב המוגדרות היטב שלה. אתה יכול להשתמש בחבילת הפורמט המובנית, ובפקודה go fmt, כדי לעצב אוטומטית את הקוד שלך. זה יעזור להבטיח שמתכנתי Go אחרים יוכלו לקרוא אותו בקלות ככל האפשר.
חבילת הפורמט והפקודה fmt
ה פוּרמָט החבילה מיישמת עיצוב סטנדרטי עבור לך קוד מקור. החבילה פועלת יחד עם ללכת לפורמט כלי שורת פקודה לגמישות בעיצוב קוד Go.
חבילת הפורמט היא תת-מודול בחבילת go. כך תוכל לייבא אותו:
יְבוּא"עבור/פורמט"
אתה יכול לעיין בתיעוד של הפקודה go fmt על ידי ציון ה עֶזרָה פקודה לפני ה fmt פקודה:
לך לעזור fmt
ציין שם קובץ אחרי הפקודה fmt כדי לעצב את הקובץ הזה. פעולה זו תתאים את הרווח הלבן וההזחה של הקוד שלך כך שיתאימו לתקני Go.
ללכת fmt main.go
מאחורי הקלעים, go fmt הוא כינוי לפקודת gofmt, במיוחד:
גופמט -ל -וו
דגלים אלה גורמים ל-gofmt לכתוב כל שינוי בכל קובץ שאתה מספק ולפרט את שמות הקבצים שהוא משנה.
אתה יכול להוסיף את -איקס דגל לפקודה fmt. הדגל -x עוזר לכתוב שינויים מהפורמט לקובץ המקורי.
go fmt -x main.go
ה -נ הדגל פועל בדומה ל-x, אך אינו מבצע שינויים. במקום זאת, הוא מציג את הפקודות ש-go fmt יפעל ללא ה-n:
go fmt -n main.go
הדגל אומר לפורמט להציג שינויים, מה שמאפשר לך לסקור אותם תחילה לפני שתחיל אותם.
הנה תוכנית Go פשוטה שעוברת דרך מספרים שלמים מאפס עד חמש ומדפיסה את המחרוזת "Hello World!".
// עיצוב קובץ בשם main.go כפי שמוצג בדוגמה למעלה
חֲבִילָה רָאשִׁי
יְבוּא"fmt"
funcרָאשִׁי() {
var איקס int=5
ל אני:=0;אני fmt. Println("שלום עולם!")
}
}
עיצוב קוד המקור של Go
חבילת הפורמט מכילה א מָקוֹר פונקציה לעיצוב קבצי Go מתוכניות. תצטרך לקרוא את הקובץ ולהעביר את התוכן כארגומנטים לפונקציית המקור.
הפונקציה Source תחזיר את תוכן הקובץ המעוצב שתוכל לכתוב לקובץ או לקובץ חדש.
אתה יכול לקרוא קבצים עם ה ReadFile פונקציה של יוטיל חֲבִילָה. הפונקציה ReadFile לוקחת את שם הקובץ ומחזירה את תוכן הקובץ ושגיאה לטיפול.
fileContent, err := ioutil. ReadFile("main.go")
אם טעות != אֶפֶס {
עֵץ. פתאלן("היתה שגיאה בקריאת הקובץ", טעות)
}
העברת תוכן הקובץ לפונקציה Source מחזירה את תוכן הקובץ המעוצב ושגיאה לטיפול.
פורמט, שגיאה := פורמט. מקור (קובץ תוכן)
אם טעות != אֶפֶס {
עֵץ. פתאלן("היתה שגיאת עיצוב בפונקציית המקור", טעות)
}
אתה יכול לכתוב את תוכן הקובץ המעוצב לקובץ עם ה- WriteFile פונקציה של יוטיל חֲבִילָה. הפונקציה WriteFile מקבלת את שם הקובץ, תוכן ו מצב הרשאת קובץ, מחזיר שגיאות כלשהן. מצב ההרשאה רלוונטי רק אם הקובץ לא קיים, ובמקרה זה WriteFile תיצור אותו.
ה 0644 מצב הרשאת קובץ נותן:
- הרשאות קריאה וכתיבה של בעל הקובץ.
- הרשאות קריאה למשתמשים אחרים באותה קבוצה כמו הבעלים.
- אין הרשאות למשתמשים אחרים.
err = ioutil. WriteFile("main.go", מעוצב, 0644)
אם טעות != אֶפֶס {
עֵץ. פתאלן("היתה שגיאה בכתיבת הקובץ", טעות)
}
לחלופין, אתה יכול להעביר את קוד המקור Go לפונקציית המקור לצורך עיצוב. אתה יכול לציין את הקוד בפרוסת בתים באמצעות טיקים (`):
חֲבִילָה רָאשִׁי
יְבוּא (
"fmt"
"עבור/פורמט"
)funcרָאשִׁי() {
// תוכנית פשוטה שמחשבת את שטח המשולש עם המתמטיקה
// פונקציה
פורמט, שגיאה := פורמט. מָקוֹר([]בייט(`
חֲבִילָה רָאשִׁי
יְבוּא(
"fmt"
"מתמטיקה"
)
funcרָאשִׁי(){
var א לצוף64=3
var ב לצוף64=4
var ג לצוף64=5
var ס לצוף64=(a+b+c)/2
var אֵזוֹר לצוף64=מתמטיקה. Sqrt (s*(s-a)*(s-b)*(s-c))
fmt. Println("השטח של המשולש הוא:",אֵזוֹר)
}
`))
אם טעות != אֶפֶס {
עֵץ. פתאלן("היתה שגיאת עיצוב בפונקציית המקור", טעות)
} אַחֵר {
fmt. Println(חוּט(מפורמט))
}
}
בעיצוב, תצטרך להמיר את פרוסת הבתים למחרוזת עם ה- חוּט פוּנקצִיָה. הנה קוד המקור המעוצב.
התאמה אישית של תהליך העיצוב
אתה יכול להתאים אישית את תהליך העיצוב עם חבילת הפורמט Config struct. מבנה התצורה מכיל שדות שבהם ניתן לציין אפשרויות עיצוב במופע.
יְבוּא"עבור/פורמט"
config := &פורמט. תצורה{
// Tabwidth קובע את מספר הרווחים לכל טאב.
רוחב כרטיסיות: 8,// UseTabs מציין אם המעצב צריך להשתמש בכרטיסיות במקום
// רווחים.
השתמש בכרטיסיות: שֶׁקֶר,// TabIndent משמש כדי לקבוע אם ההזחה הראשונית צריכה להיות
// נעשה באמצעות טאבים או רווחים.
TabIndent: נָכוֹן,// NoFinalTab מציין אם יש להסיר מכרטיסייה סופית
// שורות לפני עיצובם.
NoFinalTab: נָכוֹן,// Spaces מציין אם יש להשתמש ברווחים ליישור.
רווחים: נָכוֹן,
// NoTrimTrailingSpace מציין אם רווח לבן נגרר צריך
// יש לקצץ מקווים לפני עיצובם.
NoTrimTrailingSpace: שֶׁקֶר,
}
אתה יכול להשתמש בשדות כדי להתאים אישית את ההתנהגות של הפורמט שלך על ידי הגדרת האפשרויות בהתאם לדרישות שלך.
לאחר מכן תוכל להשתמש בשיטת המקור של מבנה זה כדי לעצב פרוסת בתים בהתבסס על התצורה שלך.
funcרָאשִׁי() {
fileContent, err := ioutil. ReadFile("main.go")// שימו לב שזוהי שיטת מקור מסוג `config`, לא מה-
// חבילת `format` עצמה למרות שהפונקציונליות זהה, תעשה זאת
// צריך לדבוק בזה אם אתה צריך להגדיר את הפורמט
מעוצב, שגיאה := config. מקור (קובץ תוכן)אם טעות != אֶפֶס {
עֵץ. פתאלן("היתה שגיאת עיצוב עם סוג התצורה", טעות)
}
יוטיל. WriteFile("main.go", מעוצב, 0644)
}
קורא להגדרות. פונקציית Source() כמו זו מעצבת את התוכן של main.go קובץ באמצעות אפשרויות התצורה. הוא מחזיר את התוכן המעוצב כפרוסת בתים ושגיאה.
אתה יכול לעצב ולתפעל מחרוזת ב-Go
חבילת הפורמט והפקודה go fmt יכולה לעזור לך להפוך את תהליך עיצוב הקוד שלך לאוטומטי.
Go מספקת גם חבילת fmt לעיצוב מחרוזת וחבילת מחרוזות למניפולציה של מחרוזות.
חבילת fmt מיישמת I/O בפורמט פשוט יותר עם פונקציות מקבילות לפונקציות printf ו- scanf של C. פונקציית המחרוזות מיישמת פונקציות פשוטות כדי לתפעל מחרוזות מקודדות UTF-8.