NewIpcServer
接收可由价值型或指针式满足接口的(Handle method has pointer receiver)
package ipc
import (
"testing"
)
// import (
// "encoding/json"
// "fmt"
//)
type Request struct {
Method string `json/"method"`
Params string `json/"params"`
}
type Response struct {
Code string `json/"code"`
Body string `json/"body"`
}
type Server interface {
Name() string
Handle(method, params string) *Response
}
type IpcServer struct {
Server
}
func NewIpcServer(server Server) *IpcServer {
return &IpcServer{server}
}
type EchoServer struct {
}
func (server *EchoServer) Name() string {
return "EchoServer"
}
func (server *EchoServer) Handle(method, params string) *Response {
return &Response{"OK", "Echo " + method + " " + params}
}
func TestIpc(t *testing.T) {
server := EchoServer{}
ipcServer := NewIpcServer(server)
}
意义。
由于EchoServer
实现了作为指针型接收器(例如func (server *EchoServer) ...
)的接口功能,所以您必须将指针传递给NewIpcServer
函数。
在你TestIpc
职能转变server
是一个指针作为这样
server := new(EchoServer)
和测试应编译就好了。