节俭的golang无法实现thrift.TProcessorFunction(Process方法的类型错误)

I am getting this error:

# metric_system
./metric_system.go:227: cannot use myStructProviderProcessorGetMyStruct literal (type *myStructProviderProcessorGetMyStruct) as type thrift.TProcessorFunction in assignment:
    *myStructProviderProcessorGetMyStruct does not implement thrift.TProcessorFunction (wrong type for Process method)
        have Process(int32, thrift.TProtocol, thrift.TProtocol) (bool, thrift.TException)
        want Process(context.Context, int32, thrift.TProtocol, thrift.TProtocol) (bool, thrift.TException)
./metric_system.go:235: not enough arguments in call to processor.Process
    have (int32, thrift.TProtocol, thrift.TProtocol)
    want (context.Context, int32, thrift.TProtocol, thrift.TProtocol)

when I am building simple go app using golang 1.8.3 and thrift 0.10.0 To reproduce:

2038  thrift -r --gen go metric_system.thrift 
2040  cp -r gen-go/* src
2041  cd src
 2042  go build

folder structure

./metric_system.thrift
./.settings
./.settings/language.settings.xml
./src
./src/metric_system
./src/metric_system/my_struct_provider-remote
./src/metric_system/my_struct_provider-remote/my_struct_provider-remote.go
./src/metric_system/metric_system.go
./src/metric_system/GoUnusedProtection__.go
./src/metric_system/metric_system-consts.go
./src/main.go
./.cproject
./pkg
./pkg/linux_amd64
./.project
./bin
./gen-go
./gen-go/metric_system
./gen-go/metric_system/my_struct_provider-remote
./gen-go/metric_system/my_struct_provider-remote/my_struct_provider-remote.go
./gen-go/metric_system/metric_system.go
./gen-go/metric_system/GoUnusedProtection__.go
./gen-go/metric_system/metric_system-consts.go

metric_system.thrift file:

struct MyStruct { 
    1: i64 myInt, 
}

service MyStructProvider { MyStruct getMyStruct() }

Any help appreciated

The error says it all, the Process method you've implemented does not meet the interface requirement. You're missing the first argument, a context.Context.

switch your git branch to 0.10.0

$GOPATH:git.apache.org/thrift.git/lib/go/thrift

thrift.git git:(master) ✗ git branch -a master remotes/origin/0.1.x * remotes/origin/0.10.0 remotes/origin/0.2.x remotes/origin/0.3.x remotes/origin/0.4.x remotes/origin/0.5.x remotes/origin/0.6.x remotes/origin/0.7.x remotes/origin/0.8.x remotes/origin/0.9.1 remotes/origin/0.9.2 remotes/origin/0.9.3 remotes/origin/0.9.x remotes/origin/HEAD -> origin/master remotes/origin/master remotes/origin/py-compiler

I sloved this problem by using the master branch of thrift to genergate go code. https://github.com/apache/thrift/tree/master

the reason is your thrift version is different , maybe you compile the thrift protocol using 0.9.2 version, but include the thrift library file is 1.0.0 version