الفرق بين == و === في Go
مرحبًا بالجميع! أنا أتعلم Go بعد JavaScript وواجهت سوء فهم حول عوامل المقارنة. في JS هناك مقارنة صارمة (===) وغير صارمة (==)، بينما في Go أرى فقط ==. هل فهمي صحيح أنه لا يوجد عامل === في Go؟ وإذا لم يكن موجودًا، فكيف تعمل المقارنة للأنواع المختلفة؟
حاولت كتابة هذا الكود:
package main
import "fmt"
func main() {
var a int = 5
var b float64 = 5.0
fmt.Println(a == b) // خطأ في الترجمة: mismatched types int and float64
}توقعت أن Go إما سيحول الأنواع (مثل المقارنة غير الصارمة في JS) أو سيعطي خطأ. حصلت على خطأ في الترجمة. يعني أنه في Go لا يمكن مقارنة int و float64 مباشرة؟ هل يجب دائمًا تحويل الأنواع بشكل صريح؟ وماذا عن مقارنة الهياكل (structs) أو المؤشرات (pointers)؟ هل هناك حالات يتصرف فيها == كمقارنة غير صارمة؟
أرجو توضيح كيفية مقارنة القيم في Go بشكل صحيح.