如何实现下面描述的功能
How to achieve the functionality described below
我需要做这样的事情:
// I have an interface with these two methods defined
type mapper interface {
ReadMapper(interface{}) interface{}
WriteMapper(interface{}) interface{}
}
然后我需要分配 ReadMapper
和 WriteMapper
一些在项目其他地方定义的函数。有没有办法在 Go 中做这样的事情?给它们分配功能?
V1Mapper mapper
V1Mapper.ReadMapper = functions()....
V1Mapper.WriteMapper = functions()....
然后,我需要另一个映射并希望将映射器作为值类型并希望执行如下操作。
mappingFunctions := map[string]mapper
mappingFunctions ["some_string"] = V1Mapper
然后从另一个文件,我想这样做:
mappingFunctions["some_string"].ReadMapper(Data)
编辑:我从未在问题中询问语法。我只是想知道是否有更好的方法来做到这一点,因为我是 Go 的新手。我同意我对 Go 的语法不是很熟悉,我将不得不阅读文档(不是一次而是多次)。
如果您想从现有函数中组合映射器,您可以使用结构而不是接口:
type Mapper struct {
ReadMapper func(interface{}) interface{}
WriteMapper func(interface{}) interface{}
}
mappers := map[string]*Mapper{}
mappers["some_name"] = &Mapper{
ReadMapper: someFunc1,
WriteMapper: someFunc2,
}
或
m := new(Mapper)
m.ReadMapper = someFunc1
m.WriteMapper = someFunc2
mappers["some_name"] = m
我需要做这样的事情:
// I have an interface with these two methods defined
type mapper interface {
ReadMapper(interface{}) interface{}
WriteMapper(interface{}) interface{}
}
然后我需要分配 ReadMapper
和 WriteMapper
一些在项目其他地方定义的函数。有没有办法在 Go 中做这样的事情?给它们分配功能?
V1Mapper mapper
V1Mapper.ReadMapper = functions()....
V1Mapper.WriteMapper = functions()....
然后,我需要另一个映射并希望将映射器作为值类型并希望执行如下操作。
mappingFunctions := map[string]mapper
mappingFunctions ["some_string"] = V1Mapper
然后从另一个文件,我想这样做:
mappingFunctions["some_string"].ReadMapper(Data)
编辑:我从未在问题中询问语法。我只是想知道是否有更好的方法来做到这一点,因为我是 Go 的新手。我同意我对 Go 的语法不是很熟悉,我将不得不阅读文档(不是一次而是多次)。
如果您想从现有函数中组合映射器,您可以使用结构而不是接口:
type Mapper struct {
ReadMapper func(interface{}) interface{}
WriteMapper func(interface{}) interface{}
}
mappers := map[string]*Mapper{}
mappers["some_name"] = &Mapper{
ReadMapper: someFunc1,
WriteMapper: someFunc2,
}
或
m := new(Mapper)
m.ReadMapper = someFunc1
m.WriteMapper = someFunc2
mappers["some_name"] = m