// Imports the necessary libraries import ( "github.com/apache/thrift/lib/go/thrift" ) // Creates a new TProtocol object protocolFactory := thrift.NewTBinaryProtocolFactoryDefault() protocol := protocolFactory.GetProtocol(trans) // Serializes a struct structName := "MyStruct" struct := &MyStruct{ Field1: "value1", Field2: 123, } err := protocol.WriteStructBegin(structName) if err != nil { return err } err = protocol.WriteFieldString("Field1", struct.Field1) if err != nil { return err } err = protocol.WriteFieldI32("Field2", struct.Field2) if err != nil { return err } err = protocol.WriteFieldStop() if err != nil { return err } err = protocol.WriteStructEnd() if err != nil { return err }
// Imports the necessary libraries import ( "github.com/apache/thrift/lib/go/thrift" ) // Creates a new TProtocol object protocolFactory := thrift.NewTBinaryProtocolFactoryDefault() protocol := protocolFactory.GetProtocol(trans) // Deserializes a struct structName, err := protocol.ReadStructBegin() if err != nil { return nil, err } for { fieldId, fieldType, err := protocol.ReadFieldBegin() if err != nil { return nil, err } if fieldType == thrift.STOP { break } switch fieldId { case 1: val, err := protocol.ReadString() if err != nil { return nil, err } struct.Field1 = val case 2: val, err := protocol.ReadI32() if err != nil { return nil, err } struct.Field2 = val } err = protocol.ReadFieldEnd() if err != nil { return nil, err } } err = protocol.ReadStructEnd() if err != nil { return nil, err }Therefore, the package library used in these examples is "github.com/apache/thrift/lib/go/thrift".