草庐IT

multiple-interface-implem

全部标签

http - 将 interface{} 参数转换为 Go 中的 *http.Request 或 *http.Response

我打算创建一个util函数,它将读取请求/响应的主体并将其返回。这是我目前所做的:funcGetBody(ininterface{})[]byte{varbodyio.ReadervarstatusCodeintswitchv:=in.(type){case*http.Request,*http.Response:body=v.BodystatusCode=v.StatusCodedefault:log.Fatal("Onlyhttp.Requestandhttp.Responseparameterscanbeacceptedtoparsebody")}ifstatusCode!=20

http - 将 interface{} 参数转换为 Go 中的 *http.Request 或 *http.Response

我打算创建一个util函数,它将读取请求/响应的主体并将其返回。这是我目前所做的:funcGetBody(ininterface{})[]byte{varbodyio.ReadervarstatusCodeintswitchv:=in.(type){case*http.Request,*http.Response:body=v.BodystatusCode=v.StatusCodedefault:log.Fatal("Onlyhttp.Requestandhttp.Responseparameterscanbeacceptedtoparsebody")}ifstatusCode!=20

go - 使用可变参数实现接口(interface)方法

我从简单的界面开始:typeModuleinterface{Init(deps...interface{})error}我想,实现会非常简单,因为这个方法应该匹配任意数量的提供参数。这就是我最终得到的这段代码,我想,TestModule实现了Module接口(interface)。typeTestModulestruct{}func(m*TestModule)Init(strstring)error{returnnil}但是当我想将TestModule传递给任何需要Module的函数时,我得到这个错误:cannotusemodule(type*TestModule)astypeModu

go - 使用可变参数实现接口(interface)方法

我从简单的界面开始:typeModuleinterface{Init(deps...interface{})error}我想,实现会非常简单,因为这个方法应该匹配任意数量的提供参数。这就是我最终得到的这段代码,我想,TestModule实现了Module接口(interface)。typeTestModulestruct{}func(m*TestModule)Init(strstring)error{returnnil}但是当我想将TestModule传递给任何需要Module的函数时,我得到这个错误:cannotusemodule(type*TestModule)astypeModu

Go结构字段与接口(interface)方法同名

来自第三方:packagelibtypeBarinterface{Age()int}Foo(bBar)int这不会编译,因为Age既是方法名又是字段名:packagemainimport"lib"typePersonstruct{Ageint}func(p*Person)Age()int{returnp.Age}funcmain(){p:=Person()lib.Foo(p)}没有重命名Person.Age,有没有办法在Personlib.Foo()/? 最佳答案 嗯,当然不是直接的,原因已经说过了。但是您可以围绕Person创建一

Go结构字段与接口(interface)方法同名

来自第三方:packagelibtypeBarinterface{Age()int}Foo(bBar)int这不会编译,因为Age既是方法名又是字段名:packagemainimport"lib"typePersonstruct{Ageint}func(p*Person)Age()int{returnp.Age}funcmain(){p:=Person()lib.Foo(p)}没有重命名Person.Age,有没有办法在Personlib.Foo()/? 最佳答案 嗯,当然不是直接的,原因已经说过了。但是您可以围绕Person创建一

oop - 接口(interface)实现中的非接口(interface)方法

我有一个定义方法的接口(interface)。我有一个实现这个接口(interface)的结构。在其中,我已经实现了该接口(interface)的方法,并且还定义了其他方法。例如:packagemainimport("fmt")typeAnimalinterface{MakeNoise()}typeDogstruct{colorstring}/*Interfaceimplementation*/func(d*Dog)MakeNoise(){fmt.Println("Bark!")}/*EndInterfaceimplementation*/func(d*Dog)WagTail(){fm

oop - 接口(interface)实现中的非接口(interface)方法

我有一个定义方法的接口(interface)。我有一个实现这个接口(interface)的结构。在其中,我已经实现了该接口(interface)的方法,并且还定义了其他方法。例如:packagemainimport("fmt")typeAnimalinterface{MakeNoise()}typeDogstruct{colorstring}/*Interfaceimplementation*/func(d*Dog)MakeNoise(){fmt.Println("Bark!")}/*EndInterfaceimplementation*/func(d*Dog)WagTail(){fm

go - 如果不强制执行 Go 的接口(interface),它们是否有必要?

Go语言将接口(interface)类型作为特性,类似于C风格的接口(interface)。不过,Go的接口(interface)类型似乎并没有被强制执行——它们只是定义了协议(protocol),而没有实际应用于一个类型。由于它们没有强制执行,使用接口(interface)仍然是个好主意吗? 最佳答案 是的。Go不允许您构建类型层次结构,因此接口(interface)对于允许某些多态性非常重要。考虑sort.Interface在包sort中定义:typeInterfaceinterface{//Lenisthenumberofel

go - 如果不强制执行 Go 的接口(interface),它们是否有必要?

Go语言将接口(interface)类型作为特性,类似于C风格的接口(interface)。不过,Go的接口(interface)类型似乎并没有被强制执行——它们只是定义了协议(protocol),而没有实际应用于一个类型。由于它们没有强制执行,使用接口(interface)仍然是个好主意吗? 最佳答案 是的。Go不允许您构建类型层次结构,因此接口(interface)对于允许某些多态性非常重要。考虑sort.Interface在包sort中定义:typeInterfaceinterface{//Lenisthenumberofel