在 Go 中从派生类型调用方法

Nic*_*ick 1 types go

我有两个文件,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。这两个文件都位于同一个包中。

有什么我想念的吗?

Mic*_*ael 5

在 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)