English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

دليل أساسي بلغة Golang

تعليمات التحكم الخاصة بلغة Golang

functions与方法 الخاصة بلغة Golang

هيكل Golang

السلاسل والarrays الخاصة بلغة Golang

الstrings الخاصة بلغة Golang

مؤشرات Golang

واجهات Golang

توازي Golang

استثنائات Golang (Error)

متنوعة أخرى لغة Golang

الطريقة الم同名ة في Go

في لغة Go، يُسمح بإنشاء two أو أكثر من methods بنفس الاسم في نفس package، ولكن يجب أن يكون لهذه methods مستقبلات مختلفةيجب أن يكون لها نوع مختلف.يُمكن أن تكون هذه الخاصية غير متاحة في functions الخاصة بلغة Go، مما يعني أنه لا يُسمح لك بإنشاء methods بنفس الاسم في نفس package، وإذا حاولت القيام بذلك، فإن المحرر سيتحمل خطأ.

النحو:

func(reciver_name_1 Type) method_name(parameter_list)(return_type){
    // Code
}
func(reciver_name_2 Type) method_name(parameter_list)(return_type){
    // Code
}

لنناقش هذه الفكرة باستخدام مثال:

مثال1:

package main 
  
import "fmt"
  
//إنشاء هيكل
type student struct { 
    name  string 
    branch string 
} 
  
type teacher struct { 
    language string 
    marks  int
} 
  
//النامات متشابهة للمethods ولكن هناك مستقبلات مختلفة
func (s student) show() {}} 
  
    fmt.Println("اسم الطالب:", s.name) 
    fmt.Println("الفرع: ", s.branch) 
} 
  
func (t teacher) show() { 
  
    fmt.Println("اللغة:", t.language) 
    fmt.Println("نقاط الطالب: ", t.marks) 
} 
  
func main() { 
  
    // تحديد قيم الهياكل
    val1 := student{"Rohit", "EEE"} 
  
    val2 := teacher{"Java", 50} 
  
    // استدعاء الأساليب
    val1.show() 
    val2.show() 
}

الإخراج:

اسم الطالب: Rohit
الفرع: EEE
اللغة: Java
نقاط الطالب: 50

شرح الاستخدام:في المثال السابق، لدينا نفس الاسمين للأساليب، وهيshow()لكن أنواع المستقبلات مختلفة. هنا، الأولshow()ويحتوي هذا الأسلوب على مستقبل نوع s student، الثانيshow()يحتوي هذا الأسلوب على مستقبل نوع t teacher.main()في الدالة، نستخدم كلا متغيري الهياكل لندعو هذين الأسلوبين. إذا حاولنا إنشاء هذا الأسلوب باستخدام نفس النوع من المستقبل،show()إذا حاولت إنشاء هذا الأسلوب باستخدام نفس النوع من المستقبل، فإن المبرمج سيقوم بإطلاق خطأ.

مثال 2:

// إنشاء نفس الاسم للأساليب
// استقبال غير الهيكلية
package main 
  
import "fmt"
  
type value_1 string 
type value_2 int
  
// إنشاء نفس الاسم للوظائف
// استقبال غير الهيكلية
func (a value_1) display() value_1 { 
  
    return a + ".com"
} 
  
func (p value_2) display() value_2 { 
  
    return p + 298 
} 
  
func main() { 
  
    // تحديد القيم 
    res1 := value_1("w3codebox") 
    res2 := value_2(234) 
  
    // طباعة النتائج
    fmt.Println("نتيجة 1: ", res1.display()) 
    fmt.Println("نتيجة 2: ", res2.display()) 
}

الإخراج:

نتيجة 1: oldtoolbag.com
نتيجة 2: 532