我有两个文件,generic_handler.go,本质上是这样的:
type Handler struct{
fields map[string]interface{}
}
func (handler *Handler) addField(key string, value interface{}){ some code }
Run Code Online (Sandbox Code Playgroud)
和 stat_handler.go:
type StatHandler Handler
Run Code Online (Sandbox Code Playgroud)
当我尝试调用(从 stat_handler.go 文件中)这样的方法时,我收到一个错误:
//inside some function
stathandler.addField("some field", "some value")
Run Code Online (Sandbox Code Playgroud)
它出错了type StatHandler has no field or method addField。即使我addField通过 make导出也是一样的AddField。这两个文件都位于同一个包中。
有什么我想念的吗?
在 Go 中,你通常会通过组合来做到这一点:
type StatHandler struct {
Handler // Anonymous member of type Handler
}
// ...Later on
var stathandler StatHandler
stathandler.addField("some field", "some value")
Run Code Online (Sandbox Code Playgroud)