حلقههای Go بسیار متنوع هستند و به شما این امکان را میدهند که از آنها برای انواع مختلف رفتار حلقه استفاده کنید.
حلقه for یک دستور جریان کنترل است که برای اجرای مکرر یک بلوک کد استفاده می شود. در Go، حلقه for تنها ساختار حلقه است.
میتوانید از حلقه for برای تکرار بلوکهای کد و شبیهسازی طیف کاملی از حلقهها از زبانهای دیگر، از جمله حلقههای برای… هر، while، و حلقههای do…while استفاده کنید.
Go to Begin را نصب کنید
مطمئن شوید که Go را نصب کرده اید تا دنبال کنید. بیشتر این نمونه ها به بسته fmt نیاز دارند و شما باید از ساختار کلی مانند زیر استفاده کنید:
package main
import "fmt"
func main() {
// code goes here
}
یک حلقه سه جزئی برای Loop in Go
این شاید رایج ترین حلقه برای باشد. همانطور که از نام آن پیداست، سه جزء دارد: مقدار اولیه، یک شرط و یک عبارت post. در اینجا نحو است:
for initialization; condition; post {
statement(s)
}
در این حلقه، پس از مقداردهی اولیه، شرایط ارزیابی می شود. اگر درست باشد، عبارات موجود در بلوک حلقه for اجرا می شوند و به دنبال آن عبارت post قرار می گیرد. برنامه این فرآیند را تکرار می کند تا زمانی که شرایط دیگر به درستی ارزیابی نشود. در زیر یک نمونه آورده شده است.
for i := 1; i <= 5; i++ {
fmt.Println(i)
}
اینجا:
- مقداردهی اولیه i را بر روی 1 قرار می دهد
- شرط i <= 5 است
- عبارت پست i++ است
این حلقه for مقدار فعلی i را در صورتی که کمتر یا مساوی 5 باشد، چاپ میکند. «عبارت پست» بعد از هر حلقه 1 به i اضافه میکند و وقتی i به 5 رسید، حلقه خاتمه مییابد. بدون “عبارت پست”، حلقه بی نهایت بار اجرا می شود و به طور بالقوه باعث از کار افتادن برنامه می شود.
یک حلقه برای هر یک در رفتن
Go یک حلقه برای هر یک ندارد، اما می توانید حلقه for را برای عبور از مجموعه ای از عناصر تغییر دهید. در اینجا نحو است:
for index, value := range collection {
// body
}
مجموعه می تواند یک آرایه، قطعه، رشته یا نقشه یا مقادیر دریافت شده در یک کانال باشد. شاخص موقعیت در مجموعه است. مقدار عنصر موجود در شاخص است.
اگر فقط به مقدار اهمیت می دهید، ایندکس را به صورت زیر حذف کنید:
for _, value := range slice {}
در مثال زیر، حلقه از آرایه عبور می کند و هم شاخص و هم مقدار هر آیتم را در آن چاپ می کند.
array := []string{"hello", "world"}
for i, j := range array {
fmt.Println(i, j)
}
حلقه while in Go
می توانید از حلقه for برای دستیابی به عملکرد حلقه while استفاده کنید. در یک حلقه while، یک دستور اجرا می شود تا زمانی که یک شرط درست باقی بماند. موارد زیر را در نظر بگیرید:
i := 1
for i <= 5 {
i *= 2
}
fmt.Println(i)
در این کد، در حالی که i کمتر یا مساوی 5 است، در هر بار اجرای حلقه در 2 ضرب می شود.
A Do…While Loop in Go
حلقه do…while با حلقه while متفاوت است زیرا بدنه حلقه حداقل یک بار اجرا می شود. دو رویکرد برای اجرای این در Go وجود دارد.
- مطمئن شوید که شرط اولین تکرار روی true تنظیم شده است.i := 10 برای next := true; بعد؛ next = i <= 5 { fmt.Println(i) i++} // چاپ خواهد شد 10 از آنجایی که شرط اولیه روی true تنظیم شده است، i چاپ می شود و سپس در اولین تکرار افزایش می یابد. از آنجایی که شرط (i <=5) در طول تکرار دوم نادرست ارزیابی می شود، حلقه خارج می شود.
- قبل از بررسی شرط یک بار بدنه حلقه را اجرا کنید.i := 10 برای { fmt.Println(i) i++ if i >= 5 { break; }} // 10 را در حلقه for بالا چاپ می کند، 10 که مقدار i است ابتدا چاپ می شود سپس دستور if اجرا می شود. اگر شرط درست باشد، حلقه شکسته می شود، در غیر این صورت حلقه ادامه می یابد.
i := 10
for next := true; next; next = i <= 5 {
fmt.Println(i)
i++
}
// Will print 10
i := 10
for {
fmt.Println(i)
i++
if i >= 5 {
break;
}
}
// Will print 10
سایر بیانیه های جریان کنترل
حلقه ها در برنامه نویسی مهم هستند زیرا کارهای تکراری را ساده می کنند و در زمان صرفه جویی می کنند. به جای نوشتن یک خط کد ده بار، می توانید به سادگی یک حلقه ایجاد کنید که ده بار اجرا شود. سایر دستورات جریان کنترل عبارتند از if، if…else، if…else if…if و سوئیچ.