ప్రధాన కంటెంట్‌కు వెళ్లండి
మాడ్యూల్ 3 · 5లో పాఠం 1కోర్సులో 11/50~10 min
మాడ్యూల్ పాఠాలు (1/5)

సంతకం మరియు పారామితులు

Goలో, 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 { /* ... */ }

ఎగుమతి చేసిన vs ఎగుమతి చేయని ఫంక్షన్‌లు

గోలో, దృశ్యత పేరు ద్వారా నిర్ణయించబడుతుంది: ప్రారంభమయ్యే ఐడెంటిఫైయర్‌లు పెద్ద అక్షరంతో ఎగుమతి చేయబడింది (ఇతర ప్యాకేజీల నుండి కనిపిస్తుంది), మిగిలినవి ప్యాకేజీకి ప్రైవేట్‌గా ఉంటాయి.

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లోడ్ అవుతోంది...

a+bని అందించే ఫంక్షన్ మొత్తాన్ని (a, b int) int నిర్వచించండి, ఆపై దానిని (3, 4) తో మెయిన్‌లో కాల్ చేయండి.

ఎడిటర్ లోడ్ అవుతోంది…
సూచనను చూపించు

భాగస్వామ్య రకం: `(a, b int)`. కుండలీకరణాల తర్వాత రిటర్న్ రకం వెళ్తుంది.

3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది

వ్యాయామం#go.m3.l1.e2
ప్రయత్నాలు: 0లోడ్ అవుతోంది...

'ciao <name>'ని ప్రింట్ చేసే గ్రీట్ (పేరు స్ట్రింగ్) (రిటర్న్ విలువ లేదు) నిర్వచించండి.

ఎడిటర్ లోడ్ అవుతోంది…
సూచనను చూపించు

ఫంక్షన్ ఏమీ ఇవ్వకపోతే రిటర్న్ రకం లేదు.

3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది

Quiz#go.m3.l1.e3
సిద్ధంగా ఉంది

గోలో పరామితి రకం ఎక్కడికి వెళుతుంది?

Go
func f(? ?) {}
సమాధాన ఎంపికలు

రీక్యాప్

  • func name(param type, ...) returnType { ... }.
  • పేరు తర్వాత టైప్ చేయండి; ఒకే రకమైన వరుస పారామితులు → ఒక్కసారి మాత్రమే ప్రకటించండి.
  • పెద్ద అక్షరం ప్రారంభ = ఎగుమతి చేయబడింది; చిన్న అక్షరం = ప్యాకేజీకి ప్రైవేట్.
  • విధులు ఫస్ట్-క్లాస్ (కేటాయించదగినవి, పాస్ చేయదగినవి).
  • main మరియు init ప్రత్యేక సెమాంటిక్స్‌తో రిజర్వు చేయబడిన పేర్లు.