背景
我已经做了大量的规范阅读和代码测试,我认为答案是否定的,但我想确保我没有遗漏任何东西。
目标
基本上,我正在尝试为 Go 创建一个 Active Record 风格的 ORM,因为我喜欢它的可读性以及它从后端数据存储中的抽象程度。我宁愿编写而user.Save()不是data.Save(user)在用户结构上嵌入常见的 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
问题
有没有办法让顶级字段(不确定 Go 中的正确术语是什么)从嵌入式方法(例如:s.Name或s.Method()?
感谢您为新 Gopher 贡献您的时间。
aluckdog
梵蒂冈之花
相关分类