thrift go语言官方例子

把thrift上关于go的例子跑通
地址:http://thrift.apache.org/tutorial/go

1. 需要将thrift安装目录里lib/下的go部分拷贝到$GOPATH(如果发现没有的话)

# import "git.apache.org/thrift.git/lib/go/thrift"
mkdir -p $GOPATH/src/git.apache.org/thrift.git/lib/
cp -r thrift/lib/go $GOPATH/git.apache.org/thrift.git/lib/go

2. copy官方thrift教学文件tutorial.thrift、shared.thrift

文档地址: http://thrift.apache.org/tutorial/go
源代码里有: thrift/tutorial/go/src
源代码里看这个文件可以了解如何跑教学例子: thrift/tutorial/go/Makefile.am
tutorial.thrift: https://git-wip-us.apache.org/repos/asf?p=thrift.git;a=blob_plain;f=tutorial/tutorial.thrift
shared.thrift: https://git-wip-us.apache.org/repos/asf?p=thrift.git;a=blob_plain;f=tutorial/shared.thrift

thrift -r --gen go tutorial.thrift
#会生成gen-go,目录下两个文件夹shared、tutorial
#复制这俩目录到$GOPATH,主要为了可以导入就行,具体目录随意,这里放到my.learn
cp -r shared/ $GOPATH/src/my.learn/shared
cp -r tutorial/ $GOPATH/src/my.learn/tutorial
#从官方网站下载测试代码
https://git1-us-west.apache.org/repos/asf?p=thrift.git;a=blob_plain;f=tutorial/go/src/client.go;hb=HEAD
https://git1-us-west.apache.org/repos/asf?p=thrift.git;a=blob_plain;f=tutorial/go/src/handler.go;hb=HEAD
https://git1-us-west.apache.org/repos/asf?p=thrift.git;a=blob_plain;f=tutorial/go/src/main.go;hb=HEAD
https://git1-us-west.apache.org/repos/asf?p=thrift.git;a=blob_plain;f=tutorial/go/src/server.go;hb=HEAD

#这里把shared、tutorial放到my.learn下了,需要修改部分引用
#创建可执行程序
go build

#开启服务
# -server表示开启server模式,代码里还有其他参数,一看便知
./test -server 
#server返回:
*thrift.TServerSocket
Starting the simple server... on  localhost:9090
ping()
add(1,1)
calculate(1, {DIVIDE,1,0})
ping()
add(1,1)
calculate(1, {DIVIDE,1,0})


#客户端测试调用
./test
#client返回:
ping()
1+1=2
Invalid operation: InvalidOperation({WhatOp:4 Why:Cannot divide by 0})
error running client: InvalidOperation({WhatOp:4 Why:Cannot divide by 0})

#其实在my.learn/tutorial/calculator-remote里有个客户端测试代码:
go build
./calculator-remote add 1 2
#返回值(上面的server不要关)
3 <nil>

#在my.learn/shared/shared_service-remote里也有个客户端测试代码
go build
./shared_service-remote getStruct 4
#返回值
<nil> <nil>

    原文作者:wncbbnk
    原文地址: https://www.jianshu.com/p/27f721c13c5d
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞