تحتفظ لغة Go بوظيفتين لأغراض خاصة وهاتين الوظيفتين هما main() و init() . فيما يلي الأشياء التي يجب معرفتها حول استخدام الدالتين main() و init() في Golang .

الدالة main()
في لغة Go، الحزمة الرئيسية هي حزمة خاصة تستخدم مع البرامج القابلة للتنفيذ وتحتوي هذه الحزمة على الدالة main() . الدالة main() هي نوع خاص من الدالة وهي نقطة الدخول للبرامج القابلة للتنفيذ. لا يأخذ أي حجج ولا يعيد أي شيء. يقوم Go تلقائيًا باستدعاء main()، لذا ليست هناك حاجة لاستدعاء main() بشكل مباشر، ويجب أن يحتوي كل برنامج قابل للتنفيذ على حزمة main واحدة ووظيفة main().
على سبيل المثال:
// Chương trình Go minh họa
// khái niệm của hàm main()
// Khai báo gói chính
package main
// Nhập các gói
import (
"fmt"
"sort"
"strings"
"time"
)
// Hàm chính
func main() {
// Sắp xếp slice đưa ra
s := []int{345, 78, 123, 10, 76, 2, 567, 5}
sort.Ints(s)
fmt.Println("Sorted slice: ", s)
// Tìm chỉ mục
fmt.Println("Index value: ", strings.Index("Quantrimang", "ks"))
// Tìm thời gian
fmt.Println("Time: ", time.Now().Unix())
}
نتيجة:
Sorted slice: [2 5 10 76 78 123 345 567]
Index value: 3
Time: 1257894000
دالة init()
دالة init() تشبه تمامًا الدالة main، فهي لا تأخذ أي وسيطات ولا ترجع أي شيء. تتواجد هذه الوظيفة في كل حزمة ويتم استدعاؤها عند تهيئة الحزمة. تم إعلان هذه الوظيفة ضمنيًا، لذا لا يمكنك الرجوع إليها من أي مكان، ويُسمح لها بإنشاء وظائف init() متعددة في نفس البرنامج ويتم تنفيذها بالترتيب الذي تم إنشاؤها به. يُسمح لك بإنشاء وظائف init() في أي مكان في البرنامج ويتم استدعاؤها حسب ترتيب اسم ملف القاموس (الترتيب الأبجدي). يُسمح لك بوضع عبارات إذا كانت هناك دالة init()، ولكن تذكر دائمًا أن دالة init() يتم تنفيذها قبل استدعاء دالة main()، وبالتالي فهي لا تعتمد على دالة main(). الغرض الرئيسي من وظيفة init() هو تهيئة المتغيرات العالمية التي لا يمكن تهيئتها في السياق العالمي.
على سبيل المثال:
// Chương trình Go minh họa
// khái niệm của hàm init()
// Khai báo gói chính
package main
// Nhập gói
import "fmt"
// Hàm init() có nhiều nhánh
func init() {
fmt.Println("Welcome to init() function")
}
func init() {
fmt.Println("Hello! init() function")
}
// Hàm chính
func main() {
fmt.Println("Welcome to main() function")
}
نتيجة:
Welcome to init() function
Hello! init() function
Welcome to main() function