مرکزی مواد پر جائیں
ماڈیول 3 · سبق 1 از 5کورس میں 11/50~10 min
ماڈیول اسباق (1/5)

دستخط اور پیرامیٹرز

گو میں، فنکشنز کا اعلان func کے ساتھ کیا جاتا ہے۔ دستخطی نحو مختلف ہے۔ C/Java سے: قسم پیرامیٹر کے نام کے بعد جاتی ہے، a سے الگ جگہ یہ ایک ایسا انتخاب ہے جو اونچی آواز میں پڑھتا ہے — اس کے بجائے "n of type int" "int n" کا۔

بنیادی نحو

Go
func sum(a int, b int) int {
    return a + b
}

func greet(name string) {
    fmt.Println("ciao", name)
}

ایک فنکشن جس میں کوئی واپسی قدر نہیں ہے وہ صرف واپسی کی قسم کو چھوڑ دیتا ہے۔

ایک ہی قسم کے لگاتار پیرامیٹرز

اگر متعدد پیرامیٹرز ایک ہی قسم کا اشتراک کرتے ہیں، تو آپ اعلان کر سکتے ہیں۔ یہ صرف ایک بار آخری پر۔ یہ محاورہ ہے اور آپ اسے ہر جگہ دیکھیں گے:

Go
func sum(a, b int) int { return a + b }
func max3(a, b, c float64) float64 { /* ... */ }
func parse(s, sep string, limit int) []string { /* ... */ }

برآمد شدہ بمقابلہ غیر برآمد شدہ افعال

Go میں، مرئیت کا تعین اس نام سے ہوتا ہے: شناخت کنندگان جو شروع ہوتے ہیں۔ بڑے حروف کے ساتھ برآمد ہوتے ہیں (دوسرے پیکجوں سے نظر آتے ہیں)، باقی پیکج کے لیے نجی ہیں۔

Go
func Sum(a, b int) int { ... }    // esportata
func helper() { ... }              // privata al package

اقدار کے طور پر کام کرتا ہے۔

فنکشنز فرسٹ کلاس ویلیوز ہیں: آپ انہیں تفویض کرسکتے ہیں، پاس کرسکتے ہیں، اور انہیں واپس کرو. ہم بندش کے سبق میں مزید گہرائی میں جائیں گے۔

Go
op := sum            // op ha tipo func(int, int) int
fmt.Println(op(2, 3)) // 5

main اور init: دو خاص نام

  • func main() main پیکیج کا انٹری پوائنٹ ہے۔ کوئی دلیل نہیں، واپسی کی کوئی قدر نہیں۔
  • func init() کو پیکیج کے آغاز پر خود بخود کال کیا جاتا ہے (یہاں تک کہ متعدد اگر متعدد فائلیں ایک کی وضاحت کرتی ہیں)۔ سیٹ اپ کے لیے مفید؛ اسے احتیاط سے استعمال کریں.

اسے آزمائیں

ورزش#go.m3.l1.e1
کوششیں: 0لوڈ ہو رہا ہے…

ایک فنکشن sum(a, b int) int کی وضاحت کریں جو a+b لوٹاتا ہے، پھر اسے (3، 4) کے ساتھ مین میں کال کریں۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

مشترکہ قسم: `(a, b int)`۔ واپسی کی قسم قوسین کے بعد جاتی ہے۔

3 کوششوں کے بعد حل دستیاب ہے۔

ورزش#go.m3.l1.e2
کوششیں: 0لوڈ ہو رہا ہے…

greet(name string) (کوئی واپسی قدر نہیں) کی وضاحت کریں جو 'ciao <name>' پرنٹ کرتا ہے۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

اگر فنکشن کچھ نہیں لوٹاتا ہے تو واپسی کی کوئی قسم نہیں۔

3 کوششوں کے بعد حل دستیاب ہے۔

Quiz#go.m3.l1.e3
تیار

گو میں پیرامیٹر کی قسم کہاں جاتی ہے؟

Go
func f(? ?) {}
جواب کے اختیارات

Recap

  • func name(param type, ...) returnType { ... }۔
  • نام کے بعد ٹائپ کریں؛ ایک ہی قسم کے لگاتار پیرامیٹرز → صرف ایک بار اس کا اعلان کرتے ہیں۔
  • بڑے کیس ابتدائی = برآمد شدہ؛ لوئر کیس = پیکیج کے لیے نجی۔
  • افعال فرسٹ کلاس ہیں (تعین کے قابل، قابل گزر)۔
  • main اور init مخصوص الفاظ کے ساتھ مخصوص نام ہیں۔