Range
#
// _range_ က data structures တော်တော်များများရဲ့ elements တွေကို
// iterate လုပ်တဲ့နေရာမှာသုံးတာပါ။ `range` ကိုကျနော်တို့လေ့လာထားတဲ့
// data structures တွေမှာဘယ်လိုသုံးမလဲဆိုတာာအောက်မှာတချက်ကြည့်လိုက်ရအောင်။
package main
import "fmt"
func main() {
// ဒီမှာကျနော်တို့ slice ထဲမှာရှိတဲ့နံပါတ်တွေကို `range` ကို သုံးပီး ပေါင်းပြထားပါတယ်။
// Array တွေလဲအဲ့လိုဘဲ အသုံးပြုပြီးပေါင်းနိုင်ပါတယ်။
nums := []int{2, 3, 4}
sum := 0
for _, num := range nums {
sum += num
}
fmt.Println("sum:", sum)
// arrays နှင့် slices တွေကို `range` ဖြင့်အသုံးပြုရင် index နှင့် value နှစ်ခုလုံးပါပါတယ်။
// အပေါ်ကနမူနာမှာဆိုရင် ကျနော်တို့ index မလိုတဲ့အတွက် `_` ကိုသုံးပီးတော့ ignored လုပ်ခဲ့ပါတယ်။
// တခါတလေကျရင်တော့ indexs တွေကိုအသုံးပြုဖို့လိုအပ်ပါတယ်။
for i, num := range nums {
if num == 3 {
fmt.Println("index:", i)
}
}
// `range` ကို map မှာအသုံးပြုပီးတော့ key/value pairs ကို iterate လုပ်ပြတာပါ။
kvs := map[string]string{"a": "apple", "b": "banana"}
for k, v := range kvs {
fmt.Printf("%s -> %s\n", k, v)
}
// `range` ကိုသုံးပီးတော့ map ထဲမှာရှိတဲ့ keys တွေကိုဘဲ iterate လုပ်နိုင်ပါတယ်။
for k := range kvs {
fmt.Println("key:", k)
}
// `range` ကိုသုံးပီးတော့ string ထဲမှာရှိတဲ့ unicode code points တွေကို iterate လုပ်နိုင်ပါတယ်။
// ပထမ value ကတော့ character `rune` ရဲ့ starting byte index ပါပဲ။ ဒါတိယ value ကတော့ character `rune` ပါ။
// အသေးစိတ်ကို [Strings and Runes](strings-and-runes) မှာကြည့်နိုင်ပါတယ်။
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