背景埋め込みメソッドは "親"フィールドにアクセスできますか?
私はスペックの読み取りとコード・テストのかなりの量をやったと私は答えはノーだと思いますが、私は何が不足していないよ確認します。
ゴール
私はそれがどのように読める好きなので基本的に、私は、ゴーのためのActive RecordのスタイルのORMを作成しようとしているとどのようにそれはそのバックエンド・データ・ストアからである抽象化。私はむしろdata.Save(user)
よりもuser.Save()
を書くのは、ユーザーの構造体に共通のCRUDメソッドを埋め込むことです。
例
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()
?
新しいGopherにあなたの時間を寄付いただきありがとうございます。
このスレッドに関する似たような質問の解決策をご覧ください:https://stackoverflow.com/questions/22153269/how-to-reflect-fields-of-containing-struct-from-a-method-of-the-embedded -struct?rq = 1 –