Go 如何实现下面描述的功能
我需要这样做:Go 如何实现下面描述的功能,go,go-interface,Go,Go Interface,我需要这样做: // I have an interface with these two methods defined type mapper interface { ReadMapper(interface{}) interface{} WriteMapper(interface{}) interface{} } 然后我需要为ReadMapper和WriteMapper分配一些在项目中其他地方定义的函数。在围棋中有没有这样的方法?给他们分配功能 V1Mapper m
// I have an interface with these two methods defined
type mapper interface {
ReadMapper(interface{}) interface{}
WriteMapper(interface{}) interface{}
}
然后我需要为ReadMapper和WriteMapper分配一些在项目中其他地方定义的函数。在围棋中有没有这样的方法?给他们分配功能
V1Mapper mapper
V1Mapper.ReadMapper = functions()....
V1Mapper.WriteMapper = functions()....
然后,我需要另一个映射,并希望映射器作为值类型,并希望执行以下操作
mappingFunctions := map[string]mapper
mappingFunctions ["some_string"] = V1Mapper
然后从另一个文件中,我想这样做:
mappingFunctions["some_string"].ReadMapper(Data)
编辑:我从来没有问过这个问题的语法。我只是想知道是否有更好的方法,因为我是新手。我同意我不太熟悉Go的语法,我将不得不多次阅读文档,而不是一次。如果您想从现有函数组成映射器,可以使用结构而不是接口:
type Mapper struct {
ReadMapper func(interface{}) interface{}
WriteMapper func(interface{}) interface{}
}
mappers := map[string]*Mapper{}
mappers["some_name"] = &Mapper{
ReadMapper: someFunc1,
WriteMapper: someFunc2,
}
或
使用带函数的结构而不是界面怎么样?我刚刚在互联网上看到了你关于使用结构的建议。你的意思是这样的吗???类型映射器结构{ReadMapper funcinterface{}接口{}WriteMapper funcinterface{}接口{}这允许我使用点符号将函数赋值吗?请通读。这将需要大约15分钟,并且应该有任何像这样的基本语法问题。如果你在那之后还有具体的问题,让我们知道。各位,这个问题不是关于语法的。这是关于设计的。
m := new(Mapper)
m.ReadMapper = someFunc1
m.WriteMapper = someFunc2
mappers["some_name"] = m