English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
في لغة Go، يُسمح بالمقارنة بين مراجعين. قيم المراجع تتساوي فقط إذا كانت تشير إلى نفس القيمة في ذاكرة أو إذا كانت nil. يمكنك مقارنة المراجع باستخدام ميزات == و != التي توفرها لغة Go:
1. ميزة ==:إذا كانت المراجعان تشير إلى نفس المتغير، فإن هذا الميزة تعود صحيحة. أو إذا كانت المراجعان تشير إلى متغيرين مختلفين، فإنها تعود خطأ.
النحو:
pointer_1 == pointer_2
package main import "fmt" func main() { val1 := 2345 val2 := 567 //إنشاء وتحديد البوابة var p1 *int p1 = &val1 p2 := &val2 p3 := &val1 //استخدام == علمية المقارنة res1 := &p1 == &p2 fmt.Println("هل مؤشر p1 يساوي مؤشر p2: ", res1) res2 := p1 == p2 fmt.Println("هل مؤشر p1 يساوي مؤشر p2: ", res2) res3 := p1 == p3 fmt.Println("هل مؤشر p1 يساوي مؤشر p3: ", res3) res4 := p2 == p3 fmt.Println("هل مؤشر p2 يساوي مؤشر p3: ", res4) res5 := &p3 == &p1 fmt.Println("هل مؤشر p3 يساوي مؤشر p1: ", res5) }
الناتج:
هل مؤشر p1 يساوي مؤشر p2: خطأ هل مؤشر p1 يساوي مؤشر p2: خطأ هل مؤشر p1 يساوي مؤشر p3: صحيح هل مؤشر p2 يساوي مؤشر p3: خطأ هل مؤشر p3 يساوي مؤشر p1: خطأ
2. علمية !=إذا كان كلا المؤشرين يشيران إلى نفس المتغير، فإن هذا العمود يرجع إلى خطأ. أو إذا كان كلا المؤشرين يشيران إلى متغيرين مختلفين، فإنه يعود إلى صحيح.
النحو:
pointer_1 != pointer_2
package main import "fmt" func main() { val1 := 2345 val2 := 567 //إنشاء وتحديد البوابة var p1 *int p1 = &val1 p2 := &val2 p3 := &val1 // استخدام != علمية المقارنة res1 := &p1 != &p2 fmt.Println("هل مؤشر p1 غير متساوي مع مؤشر p2: ", res1) res2 := p1 != p2 fmt.Println("هل مؤشر p1 غير متساوي مع مؤشر p2: ", res2) res3 := p1 != p3 fmt.Println("هل مؤشر p1 غير متساوي مع مؤشر p3: ", res3) res4 := p2 != p3 fmt.Println("هل مؤشر p2 غير متساوي مع مؤشر p3: ", res4) res5 := &p3 != &p1 fmt.Println("هل مؤشر p3 غير متساوي مع مؤشر p1: ", res5) }
الناتج:
هل مؤشر p1 غير متساوي مع مؤشر p2: صحيح هل مؤشر p1 غير متساوي مع مؤشر p2: صحيح هل مؤشر p1 غير متساوي مع مؤشر p3: خطأ هل مؤشر p2 غير متساوي مع مؤشر p3: صحيح هل مؤشر p3 غير متساوي مع مؤشر p1: صحيح