برنامه نویسی

کلیدهای بازتابنده و غیر بازتابنده در GO (Golang)

اصطلاحات کلیدهای “بازتابنده” و “غیر بازتابنده” اصطلاحات استاندارد نیستند.
با این حال ، بر اساس زمینه ، به نظر می رسد شما ممکن است به نحوه استفاده از کلیدها در نقشه ها یا نحوه مقایسه آنها برای برابری اشاره کنید.

کلید بازتابنده

بوها کلید بازتابنده اشاره به یک کلید است که با خودش برابر است.
در GO ، این یک ویژگی اساسی برابری است.
به عنوان مثال ، اگر یک کلید دارید k، بیان k == k همیشه باید ارزیابی شود trueبشر
این یک الزام اساسی برای هر کلید مورد استفاده در نقشه یا عملیات مقایسه است.

type MyKey struct {
    ID int
}

k := MyKey{ID: 1}
fmt.Println(k == k) // true (reflexive)
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

کلید غیر قابل برگشت

بوها کلید غیر قابل برگشت دلالت بر یک کلیدی دارد که با خودش برابر نباشد ، و این امر باعث نقض قوانین اساسی برابری در GO می شود.
چنین کلیدهایی را نمی توان در نقشه ها یا برای مقایسه استفاده کرد زیرا GO برای رفتار صحیح به کلیدهایی نیاز دارد تا بازتابنده ، متقارن و گذرا باشد.

نمونه ای از یک کلید نامعتبر (فرضی ، زیرا این قوانین GO را می شکند):

// This is not valid Go code, as it violates the reflexive property.
type InvalidKey struct {
    ID int
}

func (k InvalidKey) Equal(other InvalidKey) bool {
    return k.ID != other.ID // Non-reflexive by design
}

k := InvalidKey{ID: 1}
fmt.Println(k.Equal(k)) // false (non-reflexive, invalid in Go)
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

الزامات کلیدی در نقشه های GO

در GO ، کلیدهای مورد استفاده در نقشه ها باید باشد قابل مقایسهبشر این بدان معنی است:

  1. نوع کلید باید پشتیبانی کند == وت != اپراتورها
  2. مقایسه برابری باید بازتابنده باشد (k == k همیشه درست است) ، متقارن (k1 == k2 دلالت دارد k2 == k1) ، و گذرا (k1 == k2 وت k2 == k3 دلالت دارد k1 == k3).

انواع متداول که می تواند به عنوان کلیدها در نقشه ها مورد استفاده قرار گیرد عبارتند از:

  • انواع اساسی (intبا stringبا float64، و غیره)
  • ساختار (اگر تمام زمینه های آنها قابل مقایسه باشد)
  • آرایه ها (اگر انواع عناصر آنها قابل مقایسه است)

انواع مختلفی که نمی توانند به عنوان کلید استفاده شوند عبارتند از:

  • برش
  • نقشه
  • توابع
  • ساختاری با زمینه های غیر قابل مقایسه (به عنوان مثال ، برش یا نقشه)

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا