ماڈیول اسباق (2/5)
متعدد ریٹرن اور نامزد ریٹرن
گو میں، ایک فنکشن متعدد اقدار لوٹا سکتا ہے۔ یہ وہ طریقہ کار ہے۔
(value, error) پیٹرن کو قابل بناتا ہے جسے آپ پہلے ہی دیکھ چکے ہیں اور وہ پھیلتا ہے۔
پوری معیاری لائبریری۔
متعدد واپسی۔
واپسی کی قسمیں قوسین کے درمیان جاتی ہیں، کوما سے الگ:
func divmod(a, b int) (int, int) {
return a / b, a % b
}
q, r := divmod(17, 5) // q=3, r=2وہ متعدد تفویض کے ساتھ تباہ شدہ ہیں۔ میں سے ایک کو ضائع کرنا
اقدار استعمال کرتی ہیں _:
_, r := divmod(17, 5) // solo il restoکیننیکل (T, error) پیٹرن
تقریباً تمام stdlib اس کی پیروی کرتا ہے۔ error ہمیشہ آخری ہے:
func read(path string) ([]byte, error) {
data, err := os.ReadFile(path)
if err != nil {
return nil, fmt.Errorf("read %q: %w", path, err)
}
return data, nil
}نامی واپسی۔
آپ واپسی کی قدروں کو نام دے سکتے ہیں: وہ پہلے سے اعلان شدہ متغیر بن جاتے ہیں۔
صفر پر شروع کیا گیا، اور return بغیر کسی دلیل کے انہیں واپس کرتا ہے ("ننگا
واپسی"):
func divmod(a, b int) (q, r int) {
q = a / b
r = a % b
return // naked: ritorna q, r
}نامزد واپسی دستاویزات کے ٹول ٹپس میں بھی ظاہر ہوتی ہیں، اس لیے وہ مفید ہیں۔ پیچیدہ افعال کے لیے ان لائن دستاویزات کی شکل کے طور پر — نہ صرف ننگی واپسی کے لئے.
دو سے زیادہ واپسی؟
کوئی چیز آپ کو (int, int, int, error) سے نہیں روکتی، لیکن اگر آپ کو ضرورت محسوس ہو۔
یہ تقریبا ہمیشہ ایک نشانی ہے کہ آپ کو ایک struct واپس کرنا چاہئے:
type Result struct {
Sum int
Avg float64
Max int
}
func analyze(nums []int) (Result, error) { ... }اسے آزمائیں
divmod(a, b int) (int, int) کی وضاحت کریں جو اقتباس اور بقایا کو لوٹاتا ہے۔
اشارہ دکھائیں۔
قوسین کے درمیان قسمیں واپس کریں: `(int, int)`۔
3 کوششوں کے بعد حل دستیاب ہے۔
safeDiv(a, b int) (int, error): اگر b == 0 واپس آتا ہے (0، errors. New('divisione per zero'))، بصورت دیگر (a/b، nil)۔
اشارہ دکھائیں۔
خامی ہمیشہ آخری قدر کے طور پر۔ غلطی پر: صفر قدر + غلطی۔
3 کوششوں کے بعد حل دستیاب ہے۔
نام کی واپسی کا استعمال کرتے ہوئے یہ پروگرام کیا پرنٹ کرتا ہے؟
func f() (a, b int) {
a = 1
b = 2
return
}
x, y := f()
fmt.Println(x, y)Recap
- قوسین کے درمیان متعدد اقدار:
func f() (T1, T2, error)۔ - کنونشن:
errorہمیشہ آخری قدر کے طور پر؛ غلطی پر، صفر قدر + غلطی۔ - نامزد ریٹرن متغیرات کا پہلے سے اعلان کرتے ہیں اور ننگے ریٹرن کو فعال کرتے ہیں۔
- صرف بہت مختصر افعال میں برہنہ واپسی؛ اس سے آگے، پڑھنے کی اہلیت متاثر ہوتی ہے۔
- 2-3 سے زیادہ واپسی؟ آپ شاید ایک ڈھانچہ چاہتے ہیں۔