गो में सी और सी ++ के रूप में फ़ंक्शन पॉइंटर्स के लिए समान वाक्यविन्यास नहीं है। Go blog पर इसके लिए एक बहुत अच्छी व्याख्या है। समझा जा सकता है कि गो लेखकों ने सोचा कि फ़ंक्शन पॉइंटर्स के लिए सी का सिंटैक्स नियमित पॉइंटर्स के समान ही है, इसलिए संक्षेप में उन्होंने फ़ंक्शन पॉइंटर्स को स्पष्ट करने का निर्णय लिया; यानी अधिक पठनीय।
यहां एक उदाहरण मैंने लिखा है। ध्यान दें कि fp
पैरामीटर को calculate()
में परिभाषित किया गया है और नीचे दिया गया दूसरा उदाहरण आपको दिखाता है कि आप फ़ंक्शन पॉइंटर को किसी प्रकार में कैसे बना सकते हैं और इसे फ़ंक्शन (टिप्पणी की गई गणना फ़ंक्शन) में उपयोग कर सकते हैं।
package main
import "fmt"
type ArithOp func(int, int)int
func main() {
calculate(Plus)
calculate(Minus)
calculate(Multiply)
}
func calculate(fp func(int, int)int) {
ans := fp(3,2)
fmt.Printf("\n%v\n", ans)
}
// This is the same function but uses the type/fp defined above
//
// func calculate (fp ArithOp) {
// ans := fp(3,2)
// fmt.Printf("\n%v\n", ans)
// }
func Plus(a, b int) int {
return a + b
}
func Minus(a, b int) int {
return a - b
}
func Multiply(a,b int) int {
return a * b
}
fp
पैरामीटर एक समारोह है कि दो ints लेता है और एक भी पूर्णांक रिटर्न के रूप में परिभाषित किया गया है। यह कुछ हद तक एक ही बात है Mue उल्लेख किया गया है लेकिन एक अलग उपयोग उदाहरण दिखाता है।
मैं आपके सवाल का जवाब देने के लिए जाओ के बारे में पर्याप्त जानकारी नहीं है, लेकिन मैं एक counterquestion है: क्यों करेंगे जब आपके पास उचित प्रथम श्रेणी के कार्य होते हैं तो आप फ़ंक्शन पॉइंटर्स रखना चाहते हैं? –
मुझे लगता है कि यह एक शैक्षणिक प्रश्न है। मेरे पास सी में पृष्ठभूमि है और अभी गो के बारे में सीखना शुरू कर दिया है। मैंने देखा कि गो के पास सी के समान पॉइंटर्स हैं और इसलिए सीखना चाहते थे कि क्या गो में फ़ंक्शन पॉइंटर्स संभव हैं और यदि हां, तो उन्हें कैसे घोषित करें। – Kevin