खोज…
परिचय
कार्यों में एक कार्य करने के लिए Go में फ़ंक्शंस संगठित, पुन: प्रयोज्य कोड प्रदान करते हैं। फ़ंक्शंस कोडिंग प्रक्रिया को सरल करते हैं, अनावश्यक तर्क को रोकते हैं, और कोड का पालन करना आसान बनाते हैं। यह विषय गो में कार्यों, तर्कों, मापदंडों, रिटर्न स्टेटमेंट और स्कोप की घोषणा और उपयोग के बारे में बताता है।
वाक्य - विन्यास
- func () // फ़ंक्शन प्रकार जिसमें कोई तर्क और कोई वापसी मान नहीं है
- func (x int) int // पूर्णांक को स्वीकार करता है और पूर्णांक देता है
- func (ए, बी इंट, जेड फ्लोट 32) बूल // 2 पूर्णांक स्वीकार करता है, एक फ्लोट और एक बूलियन वापस करता है
- func (उपसर्ग स्ट्रिंग, मान ... int) // "वैराडिक" फ़ंक्शन जो एक स्ट्रिंग और एक या अधिक संख्या में पूर्णांक स्वीकार करता है
- func () (int, bool) // फंक्शन दो मान लौटाता है
- func (ए, बी इंट, जेड फ्लोट64, ऑप्ट ... इंटरफ़ेस {}) (सफलता बूल) // 2 पूर्णांक, एक फ्लोट और एक या अधिक संख्या में इंटरफेस और रिटर्न स्वीकार करता है जिसका नाम बूलियन मान है (जो पहले से ही फ़ंक्शन के अंदर आरंभीकृत है। )
मूल घोषणा
एक साधारण फ़ंक्शन जो किसी भी पैरामीटर को स्वीकार नहीं करता है और किसी भी मान को वापस नहीं करता है:
func SayHello() {
fmt.Println("Hello!")
}
पैरामीटर
एक फ़ंक्शन वैकल्पिक रूप से मापदंडों का एक सेट घोषित कर सकता है:
func SayHelloToMe(firstName, lastName string, age int) {
fmt.Printf("Hello, %s %s!\n", firstName, lastName)
fmt.Printf("You are %d", age)
}
ध्यान दें कि firstName
का प्रकार छोड़ा गया है क्योंकि यह lastName
समान है।
वापसी मान
एक फ़ंक्शन कॉलर को एक या अधिक मान लौटा सकता है:
func AddAndMultiply(a, b int) (int, int) {
return a+b, a*b
}
दूसरा रिटर्न मान भी त्रुटि संस्करण हो सकता है:
import errors
func Divide(dividend, divisor int) (int, error) {
if divisor == 0 {
return 0, errors.New("Division by zero forbidden")
}
return dividend / divisor, nil
}
दो महत्वपूर्ण बातों पर ध्यान दिया जाना चाहिए:
- एक वापसी मूल्य के लिए कोष्ठक छोड़ा जा सकता है।
- प्रत्येक
return
स्टेटमेंट को सभी घोषित रिटर्न मानों के लिए एक मूल्य प्रदान करना होगा।
जिसका नाम रिटर्न वैल्यूज रखा गया है
वापसी मान एक स्थानीय चर को सौंपा जा सकता है। एक खाली return
स्टेटमेंट का उपयोग उनके वर्तमान मूल्यों को वापस करने के लिए किया जा सकता है। इसे "नग्न" वापसी के रूप में जाना जाता है। नग्न रिटर्न स्टेटमेंट का उपयोग केवल छोटे कार्यों में किया जाना चाहिए क्योंकि वे लंबे कार्यों में पठनीयता को नुकसान पहुंचाते हैं:
func Inverse(v float32) (reciprocal float32) {
if v == 0 {
return
}
reciprocal = 1 / v
return
}
//A function can also return multiple values
func split(sum int) (x, y int) {
x = sum * 4 / 9
y = sum - x
return
}
दो महत्वपूर्ण बातों पर ध्यान दिया जाना चाहिए:
- रिटर्न वैल्यू के आसपास कोष्ठक अनिवार्य है ।
- एक खाली
return
स्टेटमेंट हमेशा प्रदान किया जाना चाहिए।
शाब्दिक कार्य और समापन
एक साधारण शाब्दिक फ़ंक्शन, Hello!
मुद्रण Hello!
टालने के लिए:
package main
import "fmt"
func main() {
func(){
fmt.Println("Hello!")
}()
}
एक शाब्दिक समारोह, str
तर्क को मुद्रित करना:
package main
import "fmt"
func main() {
func(str string) {
fmt.Println(str)
}("Hello!")
}
एक शाब्दिक फ़ंक्शन, चर str
पर समापन:
package main
import "fmt"
func main() {
str := "Hello!"
func() {
fmt.Println(str)
}()
}
एक चर के लिए शाब्दिक फ़ंक्शन निर्दिष्ट करना संभव है:
package main
import (
"fmt"
)
func main() {
str := "Hello!"
anon := func() {
fmt.Println(str)
}
anon()
}
वैराडिक कार्य
किसी भी संख्या में अनुगामी तर्कों के साथ एक चर समारोह को बुलाया जा सकता है। उन तत्वों को एक स्लाइस में संग्रहीत किया जाता है।
package main
import "fmt"
func variadic(strs ...string) {
// strs is a slice of string
for i, str := range strs {
fmt.Printf("%d: %s\n", i, str)
}
}
func main() {
variadic("Hello", "Goodbye")
variadic("Str1", "Str2", "Str3")
}
तुम भी एक चर समारोह के लिए एक टुकड़ा दे सकते हैं, के साथ ...
:
func main() {
strs := []string {"Str1", "Str2", "Str3"}
variadic(strs...)
}