تکرار
Last updated
Last updated
برای انجام کارهای تکراری در گو شما از for
استفاده میکنید، در گو عبارات کلیدی while
، do
، و until
وجود ندارد. تنها ابزار شما for
میباشد که چیز خوبیست.
بیایید تابعی بنویسیم که یک حرف را پنج بار تکرار میکند.
چیز جدیدی در ایت زمینه وجود ندارد پس تلاش کنید خودتان بنویسید.
./repeat_test.go:6:14: undefined: Repeat
مراحل را به ترتیب انجام دهید شما چیز جدیدی لازم نیست بدانید که کاری کنید تست خطا بدهد.
تمام چیزی که لازم هست مقدار کافی کد هست که باعث کامپایل شدن تست بشود اما باعث پاس شدن آن نشود.
خوب نیست که میدانید برای مسائل پایهای چگونه تست گو بنویسید؟ این یعنی شما حالا میتوانیدهرچقدر که میخواهید با پروداکشن کار کنید و خیالتان راحت باشد که همه چیز درست است یا نه.
repeat_test.go:10: expected 'aaaaa' but got ''
سینتکس for
به شدت شبیه زبان سی میباشد و چیز زیادی ندارد.
برخلاف زبانهای دیگر همچون سی، جاوا، و جاوااسکریپت، برای حلقه نیازی به پرانتز نیست و گذاشتن کرلی براکت {}
الزامی هست. شاید برایتان سوال باشد که خط پایین یعنی چه
تست را اجرا کنید الان باید پاس شود.
حالا زمان ریفکتور و معرفی یک اپراتور جدید است، =+
.
=+
که متغیر اضافه کردن و مقداردهی است. کار آن این است که مقدار سمت راست اپراتور را با مقدار سمت چپ جمع کند و پاسخ را در متغیر سمت چپ بریزد. این با انواع دیگری همچون اعداد صحیح هم کار میکند.
همانطور که میبینید بنچمارکنویسی مثل تستنویسی میماند.
عبارت testing.B
به شما این امکان را میدهد که از b.N
استفاده کنید.
وقتی بنچمارک اجرا میشود, به تعداد b.N
بار تکرار میشود و در آخر محاسبه میکند که چقدر طول کشید.
تعداد دفعات اجرای کد نباید برای شما مهم باشد, خود سرویس برای شما تعداد «مناسب» را برای شما تعیین میکند.
برای اجرای بنچمارک دستور زیر را بزنید
go test -bench=.
مقدار 136 ns/op
یعنی کد ما به شکل میانگین ۱۳۶ نانو ثانیه طول کشیده تا تابع را اجرا کند که مقدار خوبی مجسوب میشود.
نکته: به شکل پیشفرض بنچمارک یکی یکی اجرا میشود.
تست را به گونهای تغییر دهید که تست تعداد دفعات تکرار را بگیرد و سپس کد را براساس آن درست کنبد
یک ExampleRepeat
بنویسید تا از تابع خود مستند داشته باشید
تمرین تست محور بیشتر
یادگیری for
یادگیری نوشتن بنچمارک
قبلا ما برای ساخت یک متغیر از :=
استفاده میکردیم که ابزاری برای ساختن و مقداردهی به یک متغیر بود و . در خط بالا ما تنها متغیر را میسازیم و به آن مقدار نمیدهیم. از var
برای ساخت تابع هم میتوان استفاده کرد که بعدا میبینیم.
روش استفاده از for به شکل مفصل توضیح داده شده.
نوشتن یکی دیگر از ویژگیهای مهم گو هست و همچون تست نوشتن میماند.
نگاهی به بستهی بیندازید. توابعی که فکر میکنید مفید باشند را پیدا کنید و با استفاده از آنها تست بنویسید. یادگیری کتابخانهی استاندارد در بلند مدت بسیار مفید است.