رنج ها (range) به طور متوالی بر روی انواع مختلفی از عناصر یک آرایه تکرار میشن . بیایید با هم دیگه range
رو روی ساختمان داده هایی که تا حالا یاد گرفتیم امتحان کنیم:
package main import "fmt" func main() {
چطور ما از range
برای اضافه کردن مقادیر عددی در آرایه های برشی استفاده میکنیم. آرایه ها هم همینطوری مثل برش ها استفاده میکنن.
nums := []int{2, 3, 4} sum := 0 for _, num := range nums { sum += num } fmt.Println("sum:", sum)
رنج range
روی هر ورودی آرایه ها و برشها میتونه شاخص و مقدار اون عنصر رو پیدا کنن.در بالا ما به این شاخص نیاز نداریم، بنابراین ما آن را با شناسه خالی _ نادیده گرفتیم. بعضی اوقات ما واقعا شاخص ها را می خواهیم.
for i, num := range nums { if num == 3 { fmt.Println("index:", i) } }
و range
روی جفت مقادیر کلید/مقدار مپ ها هم تکرار میتونه بشه:
kvs := map[string]string{"a": "apple", "b": "banana"} for k, v := range kvs { fmt.Printf("%s -> %s\n", k, v) }
حتی range
فقط میتونه روی کلیدهای مپ تکرار بشه:
for k := range kvs { fmt.Println("key:", k) }
در گو range
روی کد پوینت های یونیکدی رشته ها هم میتونه تکرار بشه. اولین مقدار اندیس rune
مورد نظر و دومین مقدار خوده rune
مورد نظر.
for i, c := range "go" { fmt.Println(i, c) } }
$ go run range.go sum: 9 index: 1 a -> apple b -> banana key: a key: b 0 103 1 111
<<آرایه map-------------------------------------------توابع>>