အပေါ်မှာ ဖန်တီးထားတဲ့ type အတွက် sort.Interface ရေးပေးဖို့လိုတယ်။
Len , Less ၊ နဲ့ Swap လို့ခေါ်တဲ့ Interface ၃ ခု။ အဲဒီဟာတွေ ရေးပေးထားမှ
sort package ထဲမှာရှိတဲ့ generic Sort function ကို သုံးလို့ရမှာ။ array လိုမျိုး
type တွေအတွက်Len နဲ့ Swap အတွက် ရေးပေးရတဲ့ကုဒ်က ဆင်တူလေ့ရှိတယ်။ sort လုပ်တဲ့
logic ရှိတဲ့နေရာက Less interface ပဲ။ အဲဒီမှာ sorting logic ကို သွားရေး
ပေးထားရတယ်။ အခုကိစ္စမှာဆို string တိုးတာပဲဖြစ်ဖြစ် လျော့တာပဲဖြစ်ဖြစ်
string length ကိုသုံးပြီး sort လုပ်ပေးပါဆိုပြီး ခိုင်းတာမျိုး။ အဲ့လို sort ဖြစ်ဖို့
len(s[i]) နဲ့ len(s[j]) တွေကို Less interface မှာ သုံးထားတယ်။
|
func (s byLength) Len() int {
return len(s)
}
func (s byLength) Swap(i, j int) {
s[i], s[j] = s[j], s[i]
}
func (s byLength) Less(i, j int) bool {
return len(s[i]) < len(s[j])
}
|
လိုအပ်သည့် ကုဒ်များကို နေရာတကျ ရေးပြီးသည့်အခါ မူလ fruits slice ကို
byLength အမျိုးအစားသို့ ပြောင်းလဲလိုက်ခြင်းအားဖြင့် မိမိစဉ်လိုသည့် လောဂျစ်ကို
အကောင်အထည် ဖော်နိုင်သွားသည်။ ထို့နောက် ၎င်း byLength ကို စဉ်ရန်
sort.Sort အသုံးပြုသည်။
|
func main() {
fruits := []string{"peach", "banana", "kiwi"}
sort.Sort(byLength(fruits))
fmt.Println(fruits)
}
|