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