草庐IT

interface-design

全部标签

go - 接口(interface)的复制或新实例

我有一个接受接口(interface)并返回接口(interface)的函数。它想将结果初始化为源的副本,然后进行一些更改,并返回结果。例如:PlaygroundtypeSomethinginterface{CopySomething()Something//I'dliketogetridofthisSetX(xint)}typeRealThingstruct{xint}func(t*RealThing)SetX(xint){t.x=x}func(t*RealThing)CopySomething()Something{newT:=*treturn&newT}funcUpdated(o

golang - gob 编码接口(interface)错误

我对golanggob编码有疑问。当我使用结构编码接口(interface)时出现错误。我的代码:packagemainimport("bytes""encoding/gob""fmt")typeDatastruct{IdintDinterface{}}typeUserstruct{NamestringAgeint}funcmain(){//workwell-----------data:=Data{Id:99,D:[]int{1,2,3},}m:=new(bytes.Buffer)enc:=gob.NewEncoder(m)err:=enc.Encode(data)iferr!=ni

golang - gob 编码接口(interface)错误

我对golanggob编码有疑问。当我使用结构编码接口(interface)时出现错误。我的代码:packagemainimport("bytes""encoding/gob""fmt")typeDatastruct{IdintDinterface{}}typeUserstruct{NamestringAgeint}funcmain(){//workwell-----------data:=Data{Id:99,D:[]int{1,2,3},}m:=new(bytes.Buffer)enc:=gob.NewEncoder(m)err:=enc.Encode(data)iferr!=ni

pointers - 将值传递给接口(interface){}

短以下代码并没有完全按照预期执行:https://play.golang.org/p/sO4w4I_Lle我假设我像往常一样弄乱了一些指针/引用的东西,但是我希望我的...funcunmarshalJSON(in[]byte,sinterface{})error...和encoding/json...funcUnmarshal(data[]byte,vinterface{})error...以相同的方式运行(例如,更新作为第二个参数传递的引用)。长上面的例子是一个没有多大意义的最小复制器。这是为了让它在Playground上工作。然而,一个不太有意义的例子是这样的:packagemai

pointers - 将值传递给接口(interface){}

短以下代码并没有完全按照预期执行:https://play.golang.org/p/sO4w4I_Lle我假设我像往常一样弄乱了一些指针/引用的东西,但是我希望我的...funcunmarshalJSON(in[]byte,sinterface{})error...和encoding/json...funcUnmarshal(data[]byte,vinterface{})error...以相同的方式运行(例如,更新作为第二个参数传递的引用)。长上面的例子是一个没有多大意义的最小复制器。这是为了让它在Playground上工作。然而,一个不太有意义的例子是这样的:packagemai

go - 为什么 Go 设计在将变量分配给具有相同签名的任何接口(interface)时不标记为错误

我刚刚开始学习Go,我的大部分背景来自Java、Ruby。我只是想知道,从我的示例来看,为什么Go语言设计者在实现接口(interface)时故意设计为不指定接口(interface)类型。因此,如果有人不小心尝试将对象分配给与签名匹配但不打算实现该接口(interface)的接口(interface),这将导致错误并且无法在编译时捕获。你可以试试这个:https://play.golang.org/p/1N0kg7m4eEpackagemainimport"fmt"typeMathExpressioninterface{calculate()float64}typeAreaCalcu

go - 为什么 Go 设计在将变量分配给具有相同签名的任何接口(interface)时不标记为错误

我刚刚开始学习Go,我的大部分背景来自Java、Ruby。我只是想知道,从我的示例来看,为什么Go语言设计者在实现接口(interface)时故意设计为不指定接口(interface)类型。因此,如果有人不小心尝试将对象分配给与签名匹配但不打算实现该接口(interface)的接口(interface),这将导致错误并且无法在编译时捕获。你可以试试这个:https://play.golang.org/p/1N0kg7m4eEpackagemainimport"fmt"typeMathExpressioninterface{calculate()float64}typeAreaCalcu

go - 如何在 Golang 的回调中使用接口(interface)?

我正在尝试使用FayeclientforGo但是当我尝试为客户端创建接口(interface)时,由于回调中的类型,它似乎失败了:packagemainimport("fmt""github.com/autogrowsystems/wray")typeMessageinterface{Data()map[string]interface{}}typePromiseinterface{Successful()bool}typeSubscriberinterface{Subscribe(string,bool,func(Message))(Promise,error)}funcsubscr

go - 如何在 Golang 的回调中使用接口(interface)?

我正在尝试使用FayeclientforGo但是当我尝试为客户端创建接口(interface)时,由于回调中的类型,它似乎失败了:packagemainimport("fmt""github.com/autogrowsystems/wray")typeMessageinterface{Data()map[string]interface{}}typePromiseinterface{Successful()bool}typeSubscriberinterface{Subscribe(string,bool,func(Message))(Promise,error)}funcsubscr

golang - 取消引用后从结构中获取接口(interface)实现实例

创建一个实现接口(interface)的结构。将其封装到另一个结构中。获取结构/取消引用它。获取指向接口(interface)实现的指针。取消引用指针会导致指向接口(interface)的另一个点。为什么取消引用指向实现的指针不会给出实现实例?packagemainimport("fmt""net/http""golang.org/x/net/http2")funcmain(){transport:=&http2.Transport{}client:=&http.Client{Transport:transport}tmp1:=client.Transporttmp2:=&client