Avatar ·

क्या Go में Java/C++ की तरह फंक्शन और मेथड ओवरलोडिंग है?

सभी को नमस्ते! मैंने Java के बाद अभी-अभी Go सीखना शुरू किया है और एक अजीब स्थिति का सामना किया है। Java में मैं इस बात का आदी था कि एक ही नाम से कई मेथड घोषित किए जा सकते हैं, लेकिन अलग-अलग पैरामीटर के साथ — इसे overloading कहा जाता है। उदाहरण के लिए, मैं लिख सकता हूँ:\n\n```java\nvoid print(String s) { ... }\nvoid print(int i) { ... }\nvoid print(double d) { ... }\n```\n\nअब मैं Go में भी ऐसा ही करने की कोशिश कर रहा हूँ:\n\n```go\npackage main\n\nfunc print(s string) {\n fmt.Println(s)\n}\n\nfunc print(i int) {\n fmt.Println(i)\n}\n\nfunc main() {\n print("hello")\n print(42)\n}\n```\n\nलेकिन कंपाइलर एक एरर देता है: `print redeclared in this block`। मैंने पैकेज का नाम बदलने, फंक्शन का क्रम बदलने की कोशिश की — कुछ भी काम नहीं आया।\n\nमैंने पढ़ा है कि Go में क्लासिकल overloading नहीं है, लेकिन यह बहुत अजीब लगता है।