سلام ممنون برای مسابقه دستگرمی.
func main(){ fmt.Println(errors.New("A") == errors.New("A")) }
سوال ارررور یکم گنگ هست برام. کد بالا میگه که دو تا آبجکت errors.new با هم برابر نیستن. اگر کاربر از فانکشن های the_lib استفاده کنه که ارور هایی که the_lib برمیگردونه با ارور های پکیج کمکی برابر نمیشه؟
بازم ممنون برای مسابقه آشنا شدم با سوالات.
صادقانه بخوام بگم صورت سوالاتتون اصلا واضح نبود که دقیقا چه کاری نیاز بوده انجام بشه در حالی که برای هر سوال دقیقا فقط یک راه حل مشخص در نظر گرفته بودید و اگر شخص اون راه حل مشخص رو انجام نمیداد 0 میگرفت یا نهایتا 10 یا 20 بهش میدادید.
در ضمن در حل سوال 2، اگر بحث استفاده از یک helper برای یک کتابخونست، باید یک instance مشخص از error هر بار توسط کتابخونه برگرده که بتونید از == داخل کدهای شرکت استفاده کنید. مثلا اینطوری استفاده کنید:
if err == helper.ErrNoPath
نه تنها سوالتون نامشخص بود بلکه راه حلی که الان ارائه دادید غلطه چون اون err ای که برمیگرده هیچ وقت مساوی با helper.IsNotPath نخواهد شد چون err ای که برمیگرده یک instance کاملا جدا هستش.
خودتون برید تست کنید.
وقتی که کتابخونه هر بار داره ی error instance رو new میکنه و بهتون برش میگردونه، شما نمیتونید بیاید و از == استفاده کنید و انتظار داشته باشید بین دو error از == استفاده کنید و اونم به شما true برگردونه.
البته چرا، اگر در صورت سوال میگفتید که قرار است از errors.Is در چک کردن ها استفاده شود، همچنین درخواستی منطقی میبود ولی با توجه به صورت سوال گفته شده، این پاسخ برای سوال 2 غلط است.
}چرا
امیدوارم کامنتامو که تایید نمیکنید و حذف میکنید لااقل توی مرحله انتخابی درست کنید مشکلاتو.
همچنین امیدوارم حداقل متن کامنت قبلیمو خونده بوده باشید و همینجوری پاک نکرده باشید چون به جد ی انتقاد صحیح بود، توی کامنت قبلی هم رک گفتم و الان هم میگم، پاسخ سوال 2 غلطه.
و همچنین امیدوارم من تنها نفری نبوده باشم که غلط بودن پاسخ سوال 2 رو متوجه شده.
روز خوش.
سپاس از به اشتراک گذاری، مختصر و مفید بیان کردید
این خط result |= … به صورت atomic نیست و ممکنه در بعضی از حالات جواب نهایی با مقدار مورد انتظار متفاوت بشه
به نظرم مفیدتر میشد که پیاده سازی Allow هم می اومد، چون یک نکتهی ریز داشت و سوال هم به خوبی بیان نشده بود.
در کل ممنونم بخاطر به اشتراک گذاری