पृष्ठभूमिएम्बेडेड विधियों "पैरेंट" फ़ील्ड तक पहुंच सकते हैं?
मैं कल्पना पढ़ने और कोड परीक्षण भी पर्याप्त मात्रा में किया है और मुझे लगता है कि जवाब नहीं है, लेकिन मुझे यकीन है कि मैं कुछ भी याद आ रही नहीं कर रहा हूँ बनाना चाहते हैं।
लक्ष्य
असल में, मैं, क्योंकि मुझे पसंद है कि यह कैसे पठनीय है जाओ के लिए एक सक्रिय रिकॉर्ड शैली ORM बनाने के लिए कोशिश कर रहा हूँ और कैसे निकाला गया यह अपनी पीठ अंत डेटा की दुकान से है। मैं उपयोगकर्ता संरचना पर सामान्य CRUD विधियों को एम्बेड करके user.Save()
data.Save(user)
लिखना चाहता हूं।
उदाहरण
package main
import (
"fmt"
"reflect"
)
func main() {
test := Foo{Bar: &Bar{}, Name: "name"}
test.Test()
}
type Foo struct {
*Bar
Name string
}
func (s *Foo) Method() {
fmt.Println("Foo.Method()")
}
type Bar struct {
}
func (s *Bar) Test() {
t := reflect.TypeOf(s)
v := reflect.ValueOf(s)
fmt.Printf("model: %+v %+v %+v\n", s, t, v)
fmt.Println(s.Name)
s.Method()
}
http://play.golang.org/p/cWyqqVSKGH
प्रश्न
वहाँ शीर्ष स्तर के क्षेत्रों बनाने के लिए एक रास्ता है (नहीं यकीन है कि क्या जाओ में सही शब्द इन के लिए है) सुलभ एम्बेडेड तरीकों से (उदाहरण: s.Name
या s.Method()
?
धन्यवाद आपका नया गोफर को अपना समय दान करना।
इस अन्य धागे पर इसी तरह के प्रश्न के समाधान देखें: https://stackoverflow.com/questions/22153269/how-to-reflect-fields-of-containing-struct-from-a-method-of-the-embedded -स्ट्रक्चर? आरक्यू = 1 –