دروس الوحدة (1/5)
التوقيع والمعلمات
في Go، يتم الإعلان عن الوظائف باستخدام func. يختلف بناء جملة التوقيع
من C/Java: النوع يتبع اسم المعلمة، مفصولاً بـ a
الفضاء. إنه خيار يمكن قراءته بصوت عالٍ بشكل أفضل - "n من النوع int" بدلاً من ذلك
من "كثافة العمليات ن".
بناء الجملة الأساسي
func sum(a int, b int) int {
return a + b
}
func greet(name string) {
fmt.Println("ciao", name)
}الدالة التي لا تحتوي على قيمة إرجاع تحذف ببساطة نوع الإرجاع.
معلمات متتالية من نفس النوع
إذا كانت هناك عدة معلمات متتالية تشترك في نفس النوع، فيمكنك الإعلان مرة واحدة فقط في آخر واحد. إنه اصطلاحي وستراه في كل مكان:
func sum(a, b int) int { return a + b }
func max3(a, b, c float64) float64 { /* ... */ }
func parse(s, sep string, limit int) []string { /* ... */ }الوظائف المصدرة مقابل الوظائف غير المصدرة
في Go، يتم تحديد إمكانية الرؤية حسب الاسم: المعرفات التي تبدأ بحرف كبير يتم تصديرها (مرئية من الحزم الأخرى)، والبعض الآخر خاص بالحزمة.
func Sum(a, b int) int { ... } // esportata
func helper() { ... } // privata al packageوظائف كقيم
الوظائف هي قيم من الدرجة الأولى: يمكنك تعيينها وتمريرها و إعادتهم. سوف نتعمق أكثر في الدرس المتعلق بعمليات الإغلاق.
op := sum // op ha tipo func(int, int) int
fmt.Println(op(2, 3)) // 5main و init: اسمان خاصان
func main()هي نقطة الدخول للحزمةmain. لا الحجج، لا توجد قيم العودة.- يتم استدعاء
func init()تلقائيًا عند بدء تشغيل الحزمة (حتى عدة ملفات مرات إذا حددت عدة ملفات ملفًا واحدًا). مفيدة للإعداد. استخدامه لماما.
جربه
حدد دالة sum(a, b int) int التي تُرجع a+b، ثم استدعيها بشكل رئيسي باستخدام (3, 4).
إظهار التلميح
النوع المشترك: `(a, b int)`. نوع الإرجاع يذهب بعد الأقواس.
الحل متاح بعد 3 من المحاولات
حدد الترحيب (سلسلة الاسم) (بدون قيمة إرجاع) التي تطبع "ciao <name>".
إظهار التلميح
لا يوجد نوع إرجاع إذا كانت الدالة لا تُرجع شيئًا.
الحل متاح بعد 3 من المحاولات
أين يذهب نوع المعلمة في Go؟
func f(? ?) {}خلاصة
- محمي_INLINE_8.
- اكتب بعد الاسم. معلمات متتالية من نفس النوع → أعلنها مرة واحدة فقط.
- الأحرف الكبيرة الأولية = تم التصدير؛ أحرف صغيرة = خاص بالحزمة.
- الوظائف من الدرجة الأولى (قابلة للتنازل، مقبولة).
mainوinitأسماء محجوزة ذات دلالات خاصة.