multiple-interface-implem
全部标签 我想在golang中为一个在构造函数中接受io.Reader的结构编写单元测试。通常io.Reader接口(interface)来自TCP连接。现在我想使用预定义的字符串并将其用作io.Reader接口(interface)的输入。类似于:s:="thisismyinput"b:=io.NewReader(s)t:=NewTestStruct(b)t.doSomething() 最佳答案 strings.Reader实现io.Reader界面。您可以使用strings.NewReader构建它的新实例:s:="thisismyinp
我有一些代码被丢弃了,实际上我被难住了——我以前使用过RPC和JSON方面的东西,但是当它在本地工作正常时,我似乎无法让它在RPC上工作。packagemainimport("log""net""net/rpc""net/rpc/jsonrpc""reflect")typeFoointerface{SayHello()error}typefakeFoostruct{internalValuestring}funcNewFakeFoo()*fakeFoo{f:=&fakeFoo{}f.internalValue="123456789012347"returnf}func(m*fakeFo
我有一些代码被丢弃了,实际上我被难住了——我以前使用过RPC和JSON方面的东西,但是当它在本地工作正常时,我似乎无法让它在RPC上工作。packagemainimport("log""net""net/rpc""net/rpc/jsonrpc""reflect")typeFoointerface{SayHello()error}typefakeFoostruct{internalValuestring}funcNewFakeFoo()*fakeFoo{f:=&fakeFoo{}f.internalValue="123456789012347"returnf}func(m*fakeFo
我的接口(interface)有问题。这是我的main.go文件;packagemainimport("fmt""bitbucket.org/xyz/trash/a")//Second-typeSecondinterface{Area()float64}//Area-funcArea()float64{return2}funcmain(){r:=new(a.Rect)n:=new(Second)r.F=*nfmt.Println(r.Area())}还有我的另一个包,a.go;packagea//First-typeFirstinterface{Area()float64}//Rect
我的接口(interface)有问题。这是我的main.go文件;packagemainimport("fmt""bitbucket.org/xyz/trash/a")//Second-typeSecondinterface{Area()float64}//Area-funcArea()float64{return2}funcmain(){r:=new(a.Rect)n:=new(Second)r.F=*nfmt.Println(r.Area())}还有我的另一个包,a.go;packagea//First-typeFirstinterface{Area()float64}//Rect
查看以下golang代码:b:=[]byte(`["a","b"]`)varvalueinterface{}json.Unmarshal(b,&value)fmt.Println(value)//Print[ab]fmt.Println(reflect.TypeOf(value))//Print[]interface{}vartargetValueinterface{}=[]string{"a","b"}ifreflect.DeepEqual(value.([]interface{}),targetValue){t.Error("pleasebeequal")}我是否对DeepEqua
查看以下golang代码:b:=[]byte(`["a","b"]`)varvalueinterface{}json.Unmarshal(b,&value)fmt.Println(value)//Print[ab]fmt.Println(reflect.TypeOf(value))//Print[]interface{}vartargetValueinterface{}=[]string{"a","b"}ifreflect.DeepEqual(value.([]interface{}),targetValue){t.Error("pleasebeequal")}我是否对DeepEqua
我有一个golang接口(interface)typeIinterface{A()B()}这个接口(interface)是typeSstruct的一个元素。现在我想向这个接口(interface)添加一个函数C(),它将被称为S类型的对象。但是这个接口(interface)是由许多其他类型实现的(例如:T)。编译时出现错误,因为T没有实现C()。一个解决方法是在T中添加C()的虚拟实现,它只返回T的返回类型的值。有没有更好的方法来做到这一点? 最佳答案 您可以使用单个结构实现多个接口(interface),如下所示。然后,您可以让方
我有一个golang接口(interface)typeIinterface{A()B()}这个接口(interface)是typeSstruct的一个元素。现在我想向这个接口(interface)添加一个函数C(),它将被称为S类型的对象。但是这个接口(interface)是由许多其他类型实现的(例如:T)。编译时出现错误,因为T没有实现C()。一个解决方法是在T中添加C()的虚拟实现,它只返回T的返回类型的值。有没有更好的方法来做到这一点? 最佳答案 您可以使用单个结构实现多个接口(interface),如下所示。然后,您可以让方
我正在尝试在第三方库之上创建一个层,在本例中为libchan.这是我定义的接口(interface):typeReceiverStreaminterface{Receive(msginterface{})error}typeInboundTransportinterface{WaitReceiveChannel()(ReceiverStream,error)}InboundTransport是Transport类型的替代://libchan.gotypeTransportinterface{//NewSendChannelcreatesandreturnsanewsendchannel