Range
از کلمه کلیدی range در داخل حلقه for و برای پیمایش و به دست آوردن مقادیر موجود در آرایه، Slice و map استفاده میشود. به مثال زیر توجه کنید :
1: package main 2: 3: import "fmt" 4: 5: func main() { 6: fmt.Println("Array example ...") 7: 8: numbers := []int {7, 13, 2, 5, 9, 5, 4, 8, 10} 9: for i:= range numbers { 10: fmt.Print(numbers[i], " ") 11: } 12: 13: 14: fmt.Println("\n") 15: 16: students := map[string]int{ 17: "Jenny" : 87, 18: "Peter" : 10, 19: "Mary Jane": 64, 20: "Azhar" : 79, 21: } 22: 23: fmt.Println("Map example with key/value") 24: 25: for key, value := range students { 26: fmt.Printf("%s: %d \n", key, value) 27: } 28: 29: fmt.Println("\nMap example just value") 30: 31: for _, value := range students { 32: fmt.Printf("%d \n", value) 33: } 34: }
Array Example ... 7 13 2 5 9 5 4 8 10 map example with key/value Peter: 10 Mary Jane: 64 Azhar: 79 Jenny: 87 map example just value 87 10 64 79
در خط 8 یک Slice یا آرایه تعریف شده است. همانطور که قبلاً گفته شد برای دسترسی به مقادیر موجود در یک Slice یا آرایه به اندیس آن مقدار نیاز داریم. در خط 9، اندیس تک تک عناصر موجود در Slice را در هر بار تکرار حلقه for گرفته و در داخل i قرار میدهیم. سپس در خط 10 از این اندیس در داخل کروشه و جلوی نام Slice استفاده میکنیم. یعنی مثلاً در اولین اجرای حلقه for، اندیس 0 و در نتیجه مقدار اولین عنصر آرایه با استفاده از numbers[0] به دست آمده و چاپ میشود. در خطوط 21-16 یک map به نام students تعریف شده است. یکی از قابلیتهای range در داخل حلقه for این است که میتوان، اندیس و مقدارهای آرایه، Slice و map را هم به دست آورد. در خط 25 این کار را انجام دادهایم و دو متغیر تعریف کرده و نتیجه برنامه به طور خودکار اندیسهای map را در داخل اولین متغیر یعنی Key و مقادیر را در داخل متغیر دوم یعنی Value قرار میدهد. حال اگر بخواهیم فقط مقادیر را چاپ کنیم کافیست که از علامت _ (blank identifier) استفاده کنیم. کاری که در خط 31 انجام دادهایم. این علامت در اینجا بدین معنی است که ما نیازی به کلیدها نداریم.