goRPC newdispatcher 已导入但未使用

标签 go rpc grpc

我正在使用 valyala goRPC package 。我正在尝试实现这个例子:

package main

import (
"errors"
"fmt"
"log"
)

type ExampleDispatcherService struct {
state int
}

func (s *ExampleDispatcherService) Get() int { return s.state }

func (s *ExampleDispatcherService) Set(x int) { s.state = x }

func (s *ExampleDispatcherService) GetError42() (int, error) {
    if s.state == 42 {
    return 0, errors.New("error42")
    }
return s.state, nil
}

func (s *ExampleDispatcherService) privateFunc(string) { s.state = 0 }

func main() {
d := NewDispatcher()

service := &ExampleDispatcherService{
    state: 123,
}

// Register exported service functions
d.AddService("MyService", service)

// Start rpc server serving registered service.
addr := "127.0.0.1:7892"
s := NewTCPServer(addr, d.NewHandlerFunc())
if err := s.Start(); err != nil {
    log.Fatalf("Cannot start rpc server: [%s]", err)
}
defer s.Stop()

// Start rpc client connected to the server.
c := NewTCPClient(addr)
c.Start()
defer c.Stop()

// Create client wrapper for calling service functions.
dc := d.NewServiceClient("MyService", c)

res, err := dc.Call("Get", nil)
fmt.Printf("Get=%+v, %+v\n", res, err)

service.state = 456
res, err = dc.Call("Get", nil)
fmt.Printf("Get=%+v, %+v\n", res, err)

res, err = dc.Call("Set", 78)
fmt.Printf("Set=%+v, %+v, %+v\n", res, err, service.state)

res, err = dc.Call("GetError42", nil)
fmt.Printf("GetError42=%+v, %+v\n", res, err)

service.state = 42
res, err = dc.Call("GetError42", nil)
fmt.Printf("GetError42=%+v, %+v\n", res, err)

}

但是当我尝试构建它时出现了这个错误:

PS C:\Work\goRPC> go build .\prueba1.go
# command-line-arguments
.\prueba1.go:27: undefined: NewDispatcher
.\prueba1.go:38: undefined: NewTCPServer
.\prueba1.go:45: undefined: NewTCPClient

我添加了包 import "github.com/valyala/gorpc" 但现在我得到这个错误:

# command-line-arguments
.\prueba1.go:7: imported and not used: "git
.\prueba1.go:29: undefined: NewDispatcher
.\prueba1.go:40: undefined: NewTCPServer
.\prueba1.go:47: undefined: NewTCPClient

我知道这是对 golang 的新手怀疑,但我不知道该怎么做。

感谢您的宝贵时间。

最佳答案

尝试使用导入前缀限定标识符以使其定义

d := gorpc.NewDispatcher()

关于goRPC newdispatcher 已导入但未使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36798854/

相关文章:

c++ - BOOST ASIO multi-io_service RPC框架设计RFC

python - Websocket/event-source/... 实现将双向 RPC 暴露给 python/django 应用程序

Golang gRPC 默认值

go - 在 GO 语言中将方法从一个文件引用到另一个文件

python - 取消 xmlrpc 客户端请求?

go - 马提尼绑定(bind) "cannot return value obtained from unexported field or method"

java - grpc 示例是否旨在跨语言交流?

android - 为什么 Xamarin Android 无法发送 GRPC/Http2 请求?

curl - 使用 Go 的 POST 失败但适用于 curl

go - grpc-通过 https : failed rpc error: code = Unavailable desc = transport is closing: