2016-04-22 64 views
0

我正在使用valyala goRPC package。我想實現這個例子:goRPC newdispatcher import and not used

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的noobie疑問,但我對於該怎麼做毫無頭緒。

謝謝你的時間。

回答

2

嘗試資格標識符與進口前綴,使他們定義

d := gorpc.NewDispatcher() 
+0

AAAG!一個noobie失敗!非常感謝!! – dbaus