निम्न कोड ठीक काम करता है। दो तरीकों दो अलग structs पर काम और struct के एक क्षेत्र मुद्रण: अगर मैं निम्नलिखित में विधि हस्ताक्षर बदलने के लिए,गोलांग विधियों के समान नाम और धर्मार्थता, लेकिन विभिन्न प्रकार
A
B
अब:
type A struct {
Name string
}
type B struct {
Name string
}
func (a *A) Print() {
fmt.Println(a.Name)
}
func (b *B) Print() {
fmt.Println(b.Name)
}
func main() {
a := &A{"A"}
b := &B{"B"}
a.Print()
b.Print()
}
कंसोल में वांछित आउटपुट दिखाता है जिस तरह से मुझे एक संकलन त्रुटि मिलती है।
./test.go:22: Print redeclared in this block
previous declaration at ./test.go:18
./test.go:40: cannot use a (type *A) as type *B in function argument
प्रश्न:
func Print(a *A) {
fmt.Println(a.Name)
}
func Print(b *B) {
fmt.Println(b.Name)
}
func main() {
a := &A{"A"}
b := &B{"B"}
Print(a)
Print(b)
}
मैं भी कार्यक्रम संकलन नहीं कर सकता: मैं बस विधि के तर्कों को विधि के रिसीवर के लिए कदम क्यों यह, कि मैं अदला-बदली कर सकते हैं रिसीवर में संरचना प्रकार, लेकिन तर्कों में नहीं, जब विधियों के समान नाम और arity है?
धन्यवाद। बस इसे मिला: http://golang.org/doc/faq#overloading – Kiril