Goでは、私はバイト配列data []byte
を持っていますが、それはThriftによって生成されたオブジェクトに読み込もうとしています。次のようにC#では作業コードは次のとおりです。GolangでThriftのTMemoryBufferをどのように使用しますか?
var request = new Request();
using (var transport = new TMemoryBuffer(data))
using (var protocol = new TBinaryProtocol(transport))
{
request.Read(protocol);
}
しかしゴーで、それは動作しません:
request := app.NewRequest()
transport := thrift.TMemoryBuffer{
Buffer: bytes.NewBuffer(data),
}
protocol := thrift.NewTBinaryProtocolTransport(transport) // error here
request.Read(protocol)
それが与えるエラーは次のとおりです。
cannot use memoryBuffer (type thrift.TMemoryBuffer) as type thrift.TTransport in argument to thrift.NewTBinaryProtocolTransport:
thrift.TMemoryBuffer does not implement thrift.TTransport (Close method has pointer receiver)
私は方法がわかりませんよTMemoryBuffer
はTTransport
を実装していないようで、代わりにTMemoryBuffer
を使用する必要があるというドキュメントは見つかりません。
タイプを明示的に作成するのではなく、['NewTMemoryBuffer'](https://godoc.org/github.com/nporsche/golang-thrift#NewTMemoryBuffer)を使ってみましたか? – abhink
@abhinkそれは働いています、ありがとう!しかし、なぜ私は理解できません。 –