मैं निम्नलिखित struct की गहरी प्रतिलिपि प्रदर्शन करने के लिए प्रयास कर रहा हूँ:आप गो में एक स्ट्रक्चर की गहरी प्रति कैसे करते हैं?
// Ternary Tree
type Tree struct {
Left *Tree
Mid *Tree
Right *Tree
Value interface{}
Parent *Tree
Orientation string
IsTerminal bool
Type string
}
निम्नलिखित मेरी माफी प्रयास है। ऐसा लगता है कि मैं रूट पर एक नया पेड़ बना रहा हूं लेकिन यह बच्चे अभी भी स्मृति में एक ही पते पर इशारा कर रहे हैं।
func (tree *Tree) CopyTree() *Tree {
if (tree == nil) {
return nil
} else {
copiedTree := &Tree {
tree.Left.CopyTree(),
tree.Mid.CopyTree(),
tree.Right.CopyTree(),
tree.Value,
tree.Parent.CopyTree(),
tree.Orientation,
tree.IsTerminal,
tree.Type}
return copiedTree
}
}
क्या कोई उपयोगी संरचना है जो संरचना की गहरी प्रतिलिपि बनाने में सहायता करती है? यदि नहीं, तो मैं खुद को इस गहरी प्रतिलिपि कैसे करूं? नोट, "deepcopy" पैकेज अब काम नहीं करता है क्योंकि यह कुछ फ़ंक्शंस का उपयोग करता है जिन्हें गो 1
इसमें कुछ भी नहीं बनाया गया है। हालांकि, [डीपीकॉपी जैसे पैकेज जो आपके लिए यह कर सकते हैं] (http://godoc.org/code.google.com/p/rog-go/ एक्सपी/गहरी कॉपी) ("प्रायोगिक" स्थिति को ध्यान में रखते हुए) –
@ सिमॉन व्हाइटहेड मैंने उस पैकेज को एक कोशिश दी। दुर्भाग्यवश, यह उन कार्यों का एक समूह का उपयोग करता है जिन्हें गो 1 –
माफी के रिलीज के साथ बहिष्कृत किया गया था .. मुझे एहसास नहीं हुआ (मैंने इसे 1 से पहले इस्तेमाल किया होगा)। –