क्या गोलांग का उपयोग कर सी # में फंक्शन अधिभार या वैकल्पिक पैरामीटर जैसे काम करना संभव है? या शायद एक वैकल्पिक तरीका?गो में फ़ंक्शन ओवरलोडिंग के लिए वैकल्पिक?
उत्तर
न तो फ़ंक्शन ओवरलोडिंग और न ही वैकल्पिक तर्क सीधे समर्थित हैं। आप अपने स्वयं के तर्क संरचना का निर्माण कर सकते हैं। मैं इस तरह मतलब (अपरीक्षित, काम नहीं कर सकता ...) संपादित करें: now tested...
package main
import "fmt"
func main() {
args:=NewMyArgs("a","b") // filename is by default "c"
args.SetFileName("k")
ret := Compresser(args)
fmt.Println(ret)
}
func Compresser(args *MyArgs) string {
return args.dstFilePath + args.srcFilePath + args.fileName
}
// a struct with your arguments
type MyArgs struct
{
dstFilePath, srcFilePath, fileName string
}
// a "constructor" func that gives default values to args
func NewMyArgs(dstFilePath string, srcFilePath string) *MyArgs {
return &MyArgs{
dstFilePath: dstFilePath,
srcFilePath:srcFilePath,
fileName :"c"}
}
func (a *MyArgs) SetFileName(value string){
a.fileName=value;
}
गो में वैकल्पिक तर्क अब अनुमति है। इसे देखें http://changelog.ca/log/2015/01/30/golang –
@ मोहितबुरा आपका लिंक पढ़ने योग्य है लेकिन यह नहीं कहता कि वैकल्पिक तर्क अब अनुमति है। वास्तव में यह खाली इंटरफेस और विविध तर्कों –
जाओ में वैकल्पिक पैरामीटर को मुहावरेदार जवाब आवरण कार्यों है:
func do(a, b, c int) {
// ...
}
func doSimply(a, b) {
do(a, b, 42)
}
समारोह से अधिक भार जानबूझकर बाहर छोड़ दिया गया था, क्योंकि यह पढ़ने के लिए कोड हार्ड (एर) बनाता है।
* के आधार पर उनकी अनुपस्थिति के आसपास काम करने का एक अलग तरीका सुझाता है क्योंकि यह कोड को पढ़ने के लिए कठिन (एर) बनाता है। * यह पूरी तरह से व्यक्तिपरक है। मैं ऐसा नहीं सोचता, हमेशा नहीं। –
वहाँ कुछ संकेत here variadic तर्कों का उपयोग उदाहरण के लिए, कर रहे हैं:
sm1 := Sum(1, 2, 3, 4) // = 1 + 2 + 3 + 4 = 10
sm2 := Sum(1, 2) // = 1 + 2 = 3
sm3 := Sum(7, 1, -2, 0, 18) // = 7 + 1 + -2 + 0 + 18 = 24
sm4 := Sum() // = 0
func Sum(numbers ...int) int {
n := 0
for _,number := range numbers {
n += number
}
return n
}
या ...interface{}
किसी भी प्रकार के लिए:
Ul("apple", 7.2, "BANANA", 5, "cHeRy")
func Ul(things ...interface{}) {
fmt.Println("<ul>")
for _,it := range things {
fmt.Printf(" <li>%v</li>\n", it)
}
fmt.Println("</ul>")
}
आप आप क्या चाहते हैं की एक ठोस उदाहरण है (यह भी ग # में) दे सकते हैं करने के लिए? –
'सार्वजनिक शून्य कंप्रेसर (स्ट्रिंग dstFilePath, स्ट्रिंग srcFilePath, स्ट्रिंग फ़ाइल नाम) '' सार्वजनिक शून्य कंप्रेसर (स्ट्रिंग srcFilePath, स्ट्रिंग फ़ाइल नाम) ' – Coder
संभावित डुप्लिकेट: http://stackoverflow.com/questions/2032149/optional-parameters – nemo