本文整理汇总了Golang中go/uber/org/thriftrw/wire.NewValueList函数的典型用法代码示例。如果您正苦于以下问题:Golang NewValueList函数的具体用法?Golang NewValueList怎么用?Golang NewValueList使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了NewValueList函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: ToWire
func (v *PrimitiveContainers) ToWire() (wire.Value, error) {
var (
fields [6]wire.Field
i int = 0
w wire.Value
err error
)
if v.ListOfBinary != nil {
w, err = wire.NewValueList(_List_Binary_ValueList(v.ListOfBinary)), error(nil)
if err != nil {
return w, err
}
fields[i] = wire.Field{ID: 1, Value: w}
i++
}
if v.ListOfInts != nil {
w, err = wire.NewValueList(_List_I64_ValueList(v.ListOfInts)), error(nil)
if err != nil {
return w, err
}
fields[i] = wire.Field{ID: 2, Value: w}
i++
}
if v.SetOfStrings != nil {
w, err = wire.NewValueSet(_Set_String_ValueList(v.SetOfStrings)), error(nil)
if err != nil {
return w, err
}
fields[i] = wire.Field{ID: 3, Value: w}
i++
}
if v.SetOfBytes != nil {
w, err = wire.NewValueSet(_Set_Byte_ValueList(v.SetOfBytes)), error(nil)
if err != nil {
return w, err
}
fields[i] = wire.Field{ID: 4, Value: w}
i++
}
if v.MapOfIntToString != nil {
w, err = wire.NewValueMap(_Map_I32_String_MapItemList(v.MapOfIntToString)), error(nil)
if err != nil {
return w, err
}
fields[i] = wire.Field{ID: 5, Value: w}
i++
}
if v.MapOfStringToBool != nil {
w, err = wire.NewValueMap(_Map_String_Bool_MapItemList(v.MapOfStringToBool)), error(nil)
if err != nil {
return w, err
}
fields[i] = wire.Field{ID: 6, Value: w}
i++
}
return wire.NewValueStruct(wire.Struct{Fields: fields[:i]}), nil
}
开发者ID:thriftrw,项目名称:thriftrw-go,代码行数:57,代码来源:types.go
示例2: ToWire
func (v *Function) ToWire() (wire.Value, error) {
var (
fields [6]wire.Field
i int = 0
w wire.Value
err error
)
w, err = wire.NewValueString(v.Name), error(nil)
if err != nil {
return w, err
}
fields[i] = wire.Field{ID: 1, Value: w}
i++
w, err = wire.NewValueString(v.ThriftName), error(nil)
if err != nil {
return w, err
}
fields[i] = wire.Field{ID: 2, Value: w}
i++
if v.Arguments == nil {
return w, errors.New("field Arguments of Function is required")
}
w, err = wire.NewValueList(_List_Argument_ValueList(v.Arguments)), error(nil)
if err != nil {
return w, err
}
fields[i] = wire.Field{ID: 3, Value: w}
i++
if v.ReturnType != nil {
w, err = v.ReturnType.ToWire()
if err != nil {
return w, err
}
fields[i] = wire.Field{ID: 4, Value: w}
i++
}
if v.Exceptions != nil {
w, err = wire.NewValueList(_List_Argument_ValueList(v.Exceptions)), error(nil)
if err != nil {
return w, err
}
fields[i] = wire.Field{ID: 5, Value: w}
i++
}
if v.OneWay != nil {
w, err = wire.NewValueBool(*(v.OneWay)), error(nil)
if err != nil {
return w, err
}
fields[i] = wire.Field{ID: 6, Value: w}
i++
}
return wire.NewValueStruct(wire.Struct{Fields: fields[:i]}), nil
}
开发者ID:thriftrw,项目名称:thriftrw-go,代码行数:54,代码来源:types.go
示例3: ToWire
func (v *KeyValue_GetManyValues_Result) ToWire() (wire.Value, error) {
var (
fields [2]wire.Field
i int = 0
w wire.Value
err error
)
if v.Success != nil {
w, err = wire.NewValueList(_List_ArbitraryValue_ValueList(v.Success)), error(nil)
if err != nil {
return w, err
}
fields[i] = wire.Field{ID: 0, Value: w}
i++
}
if v.DoesNotExist != nil {
w, err = v.DoesNotExist.ToWire()
if err != nil {
return w, err
}
fields[i] = wire.Field{ID: 1, Value: w}
i++
}
if i != 1 {
return wire.Value{}, fmt.Errorf("KeyValue_GetManyValues_Result should have exactly one field: got %v fields", i)
}
return wire.NewValueStruct(wire.Struct{Fields: fields[:i]}), nil
}
开发者ID:thriftrw,项目名称:thriftrw-go,代码行数:28,代码来源:keyvalue_getmanyvalues.go
示例4: ForEach
func (m _Map_Set_I32_List_Double_MapItemList) ForEach(f func(wire.MapItem) error) error {
for _, i := range m {
k := i.Key
v := i.Value
if k == nil {
return fmt.Errorf("invalid map key: value is nil")
}
if v == nil {
return fmt.Errorf("invalid [%v]: value is nil", k)
}
kw, err := wire.NewValueSet(_Set_I32_ValueList(k)), error(nil)
if err != nil {
return err
}
vw, err := wire.NewValueList(_List_Double_ValueList(v)), error(nil)
if err != nil {
return err
}
err = f(wire.MapItem{Key: kw, Value: vw})
if err != nil {
return err
}
}
return nil
}
开发者ID:thriftrw,项目名称:thriftrw-go,代码行数:25,代码来源:types.go
示例5: ToWire
func (v *ThriftTest_TestList_Args) ToWire() (wire.Value, error) {
var (
fields [1]wire.Field
i int = 0
w wire.Value
err error
)
if v.Thing != nil {
w, err = wire.NewValueList(_List_I32_ValueList(v.Thing)), error(nil)
if err != nil {
return w, err
}
fields[i] = wire.Field{ID: 1, Value: w}
i++
}
return wire.NewValueStruct(wire.Struct{Fields: fields[:i]}), nil
}
开发者ID:yarpc,项目名称:yarpc-go,代码行数:17,代码来源:thrifttest_testlist.go
示例6: TestTypedefContainer
func TestTypedefContainer(t *testing.T) {
tests := []struct {
x td.EventGroup
v wire.Value
}{
{
td.EventGroup{
&td.Event{
UUID: &td.UUID{High: 100, Low: 200},
Time: (*td.Timestamp)(int64p(42)),
},
&td.Event{
UUID: &td.UUID{High: 0, Low: 42},
Time: (*td.Timestamp)(int64p(100)),
},
},
wire.NewValueList(
wire.ValueListFromSlice(wire.TStruct, []wire.Value{
wire.NewValueStruct(wire.Struct{Fields: []wire.Field{
{ID: 1, Value: wire.NewValueStruct(wire.Struct{Fields: []wire.Field{
{ID: 1, Value: wire.NewValueI64(100)},
{ID: 2, Value: wire.NewValueI64(200)},
}})},
{ID: 2, Value: wire.NewValueI64(42)},
}}),
wire.NewValueStruct(wire.Struct{Fields: []wire.Field{
{ID: 1, Value: wire.NewValueStruct(wire.Struct{Fields: []wire.Field{
{ID: 1, Value: wire.NewValueI64(0)},
{ID: 2, Value: wire.NewValueI64(42)},
}})},
{ID: 2, Value: wire.NewValueI64(100)},
}}),
}),
),
},
}
for _, tt := range tests {
assertRoundTrip(t, &tt.x, tt.v, "EventGroup")
}
}
开发者ID:thriftrw,项目名称:thriftrw-go,代码行数:41,代码来源:typedef_test.go
示例7: TestListOfBinaryReadNil
func TestListOfBinaryReadNil(t *testing.T) {
value := wire.NewValueStruct(wire.Struct{Fields: []wire.Field{{
ID: 1,
Value: wire.NewValueList(
wire.ValueListFromSlice(wire.TBinary, []wire.Value{
wire.NewValueBinary([]byte("foo")),
wire.NewValueBinary(nil),
wire.NewValueBinary([]byte("bar")),
wire.NewValueBinary([]byte("baz")),
}),
),
}}})
var c tc.PrimitiveContainers
require.NoError(t, c.FromWire(value))
got, err := c.ToWire()
require.NoError(t, err)
require.NoError(t, wire.EvaluateValue(got))
assert.True(t, wire.ValuesAreEqual(value, got))
}
开发者ID:thriftrw,项目名称:thriftrw-go,代码行数:21,代码来源:container_test.go
示例8: TestStructWithDefaults
func TestStructWithDefaults(t *testing.T) {
enumDefaultFoo := te.EnumDefaultFoo
enumDefaultBar := te.EnumDefaultBar
enumDefaultBaz := te.EnumDefaultBaz
tests := []struct {
give *ts.DefaultsStruct
giveWire wire.Value
wantToWire wire.Value
wantFromWire *ts.DefaultsStruct
}{
{
give: &ts.DefaultsStruct{},
giveWire: wire.NewValueStruct(wire.Struct{}),
wantToWire: wire.NewValueStruct(wire.Struct{Fields: []wire.Field{
{ID: 1, Value: wire.NewValueI32(100)},
{ID: 2, Value: wire.NewValueI32(200)},
{ID: 3, Value: wire.NewValueI32(1)},
{ID: 4, Value: wire.NewValueI32(2)},
{
ID: 5,
Value: wire.NewValueList(
wire.ValueListFromSlice(wire.TBinary, []wire.Value{
wire.NewValueString("hello"),
wire.NewValueString("world"),
}),
),
},
{
ID: 6,
Value: wire.NewValueList(
wire.ValueListFromSlice(wire.TDouble, []wire.Value{
wire.NewValueDouble(1.0),
wire.NewValueDouble(2.0),
wire.NewValueDouble(3.0),
}),
),
},
{
ID: 7,
Value: wire.NewValueStruct(wire.Struct{Fields: []wire.Field{
{
ID: 1,
Value: wire.NewValueStruct(wire.Struct{Fields: []wire.Field{
{ID: 1, Value: wire.NewValueDouble(1.0)},
{ID: 2, Value: wire.NewValueDouble(2.0)},
}}),
},
{
ID: 2,
Value: wire.NewValueStruct(wire.Struct{Fields: []wire.Field{
{ID: 1, Value: wire.NewValueDouble(100.0)},
{ID: 2, Value: wire.NewValueDouble(200.0)},
}}),
},
}}),
},
{
ID: 8,
Value: wire.NewValueStruct(wire.Struct{Fields: []wire.Field{
{
ID: 1,
Value: wire.NewValueStruct(wire.Struct{Fields: []wire.Field{
{ID: 1, Value: wire.NewValueDouble(1.0)},
{ID: 2, Value: wire.NewValueDouble(2.0)},
}}),
},
{
ID: 2,
Value: wire.NewValueStruct(wire.Struct{Fields: []wire.Field{
{ID: 1, Value: wire.NewValueDouble(3.0)},
{ID: 2, Value: wire.NewValueDouble(4.0)},
}}),
},
}}),
},
}}),
wantFromWire: &ts.DefaultsStruct{
RequiredPrimitive: int32p(100),
OptionalPrimitive: int32p(200),
RequiredEnum: &enumDefaultBar,
OptionalEnum: &enumDefaultBaz,
RequiredList: []string{"hello", "world"},
OptionalList: []float64{1.0, 2.0, 3.0},
RequiredStruct: &ts.Frame{
TopLeft: &ts.Point{X: 1.0, Y: 2.0},
Size: &ts.Size{Width: 100.0, Height: 200.0},
},
OptionalStruct: &ts.Edge{
StartPoint: &ts.Point{X: 1.0, Y: 2.0},
EndPoint: &ts.Point{X: 3.0, Y: 4.0},
},
},
},
{
give: &ts.DefaultsStruct{
RequiredPrimitive: int32p(0),
OptionalEnum: &enumDefaultFoo,
//.........这里部分代码省略.........
开发者ID:thriftrw,项目名称:thriftrw-go,代码行数:101,代码来源:struct_test.go
示例9: TestStructValidation
//.........这里部分代码省略.........
ID: 1,
Value: wire.NewValueStruct(wire.Struct{Fields: []wire.Field{
{ID: 1, Value: wire.NewValueDouble(1)},
}}),
},
{
ID: 2,
Value: wire.NewValueStruct(wire.Struct{Fields: []wire.Field{
{ID: 1, Value: wire.NewValueDouble(1)},
{ID: 2, Value: wire.NewValueDouble(2)},
}}),
},
}}),
typ: reflect.TypeOf(ts.Frame{}),
wantError: "field Y of Point is required",
},
{
desc: "Graph: missing edges",
serialize: &ts.Graph{Edges: nil},
deserialize: wire.NewValueStruct(wire.Struct{Fields: []wire.Field{}}),
wantError: "field Edges of Graph is required",
},
{
desc: "Graph: edges: misssing end",
serialize: &ts.Graph{
Edges: []*ts.Edge{
{StartPoint: &ts.Point{X: 1, Y: 2}, EndPoint: &ts.Point{X: 3, Y: 4}},
{StartPoint: &ts.Point{X: 5, Y: 6}},
},
},
deserialize: wire.NewValueStruct(wire.Struct{Fields: []wire.Field{
{
ID: 1,
Value: wire.NewValueList(
wire.ValueListFromSlice(wire.TStruct, []wire.Value{
wire.NewValueStruct(wire.Struct{Fields: []wire.Field{
{
ID: 1,
Value: wire.NewValueStruct(wire.Struct{Fields: []wire.Field{
{ID: 1, Value: wire.NewValueDouble(1)},
{ID: 2, Value: wire.NewValueDouble(2)},
}}),
},
{
ID: 2,
Value: wire.NewValueStruct(wire.Struct{Fields: []wire.Field{
{ID: 1, Value: wire.NewValueDouble(3)},
{ID: 2, Value: wire.NewValueDouble(4)},
}}),
},
}}),
wire.NewValueStruct(wire.Struct{Fields: []wire.Field{
{
ID: 1,
Value: wire.NewValueStruct(wire.Struct{Fields: []wire.Field{
{ID: 1, Value: wire.NewValueDouble(1)},
{ID: 2, Value: wire.NewValueDouble(2)},
}}),
},
}}),
}),
),
},
}}),
wantError: "field EndPoint of Edge is required",
},
开发者ID:thriftrw,项目名称:thriftrw-go,代码行数:67,代码来源:struct_test.go
示例10: TestCrazyTown
func TestCrazyTown(t *testing.T) {
tests := []struct {
desc string
x tc.ContainersOfContainers
v wire.Value
}{
{
"ListOfLists",
tc.ContainersOfContainers{
ListOfLists: [][]int32{
{1, 2, 3},
{4, 5, 6},
},
},
wire.NewValueStruct(wire.Struct{Fields: []wire.Field{
{ID: 1, Value: wire.NewValueList(
wire.ValueListFromSlice(wire.TList, []wire.Value{
wire.NewValueList(
wire.ValueListFromSlice(wire.TI32, []wire.Value{
wire.NewValueI32(1),
wire.NewValueI32(2),
wire.NewValueI32(3),
}),
),
wire.NewValueList(
wire.ValueListFromSlice(wire.TI32, []wire.Value{
wire.NewValueI32(4),
wire.NewValueI32(5),
wire.NewValueI32(6),
}),
),
}),
)},
}}),
},
{
"ListOfSets",
tc.ContainersOfContainers{
ListOfSets: []map[int32]struct{}{
{
1: struct{}{},
2: struct{}{},
3: struct{}{},
},
{
4: struct{}{},
5: struct{}{},
6: struct{}{},
},
},
},
wire.NewValueStruct(wire.Struct{Fields: []wire.Field{
{ID: 2, Value: wire.NewValueList(
wire.ValueListFromSlice(wire.TSet, []wire.Value{
wire.NewValueSet(
wire.ValueListFromSlice(wire.TI32, []wire.Value{
wire.NewValueI32(1),
wire.NewValueI32(2),
wire.NewValueI32(3),
}),
),
wire.NewValueSet(
wire.ValueListFromSlice(wire.TI32, []wire.Value{
wire.NewValueI32(4),
wire.NewValueI32(5),
wire.NewValueI32(6),
}),
),
}),
)},
}}),
},
{
"ListOfMaps",
tc.ContainersOfContainers{
ListOfMaps: []map[int32]int32{
{
1: 100,
2: 200,
3: 300,
},
{
4: 400,
5: 500,
6: 600,
},
},
},
wire.NewValueStruct(wire.Struct{Fields: []wire.Field{
{ID: 3, Value: wire.NewValueList(
wire.ValueListFromSlice(wire.TMap, []wire.Value{
wire.NewValueMap(
wire.MapItemListFromSlice(wire.TI32, wire.TI32, []wire.MapItem{
{Key: wire.NewValueI32(1), Value: wire.NewValueI32(100)},
{Key: wire.NewValueI32(2), Value: wire.NewValueI32(200)},
{Key: wire.NewValueI32(3), Value: wire.NewValueI32(300)},
}),
),
wire.NewValueMap(
wire.MapItemListFromSlice(wire.TI32, wire.TI32, []wire.MapItem{
//.........这里部分代码省略.........
开发者ID:thriftrw,项目名称:thriftrw-go,代码行数:101,代码来源:container_test.go
示例11: TestCollectionsOfPrimitives
func TestCollectionsOfPrimitives(t *testing.T) {
tests := []struct {
desc string
p tc.PrimitiveContainers
v wire.Value
}{
// Lists /////////////////////////////////////////////////////////////
{
"empty list",
tc.PrimitiveContainers{ListOfInts: []int64{}},
wire.NewValueStruct(wire.Struct{Fields: []wire.Field{{
ID: 2,
Value: wire.NewValueList(wire.ValueListFromSlice(wire.TI64, []wire.Value{})),
}}}),
},
{
"list of ints",
tc.PrimitiveContainers{ListOfInts: []int64{1, 2, 3}},
wire.NewValueStruct(wire.Struct{Fields: []wire.Field{{
ID: 2,
Value: wire.NewValueList(
wire.ValueListFromSlice(wire.TI64, []wire.Value{
wire.NewValueI64(1),
wire.NewValueI64(2),
wire.NewValueI64(3),
}),
),
}}}),
},
{
"list of binary",
tc.PrimitiveContainers{
ListOfBinary: [][]byte{
[]byte("foo"), {}, []byte("bar"), []byte("baz"),
},
},
wire.NewValueStruct(wire.Struct{Fields: []wire.Field{{
ID: 1,
Value: wire.NewValueList(
wire.ValueListFromSlice(wire.TBinary, []wire.Value{
wire.NewValueBinary([]byte("foo")),
wire.NewValueBinary([]byte{}),
wire.NewValueBinary([]byte("bar")),
wire.NewValueBinary([]byte("baz")),
}),
),
}}}),
},
// Sets //////////////////////////////////////////////////////////////
{
"empty set",
tc.PrimitiveContainers{SetOfStrings: map[string]struct{}{}},
wire.NewValueStruct(wire.Struct{Fields: []wire.Field{{
ID: 3,
Value: wire.NewValueSet(
wire.ValueListFromSlice(wire.TBinary, []wire.Value{}),
),
}}}),
},
{
"set of strings",
tc.PrimitiveContainers{SetOfStrings: map[string]struct{}{
"foo": {},
"bar": {},
"baz": {},
}},
wire.NewValueStruct(wire.Struct{Fields: []wire.Field{{
ID: 3,
Value: wire.NewValueSet(
wire.ValueListFromSlice(wire.TBinary, []wire.Value{
wire.NewValueString("foo"),
wire.NewValueString("bar"),
wire.NewValueString("baz"),
}),
),
}}}),
},
{
"set of bytes",
tc.PrimitiveContainers{SetOfBytes: map[int8]struct{}{
-1: {},
1: {},
125: {},
}},
wire.NewValueStruct(wire.Struct{Fields: []wire.Field{{
ID: 4,
Value: wire.NewValueSet(
wire.ValueListFromSlice(wire.TI8, []wire.Value{
wire.NewValueI8(-1),
wire.NewValueI8(1),
wire.NewValueI8(125),
}),
),
}}}),
},
// Maps //////////////////////////////////////////////////////////////
{
"empty map",
tc.PrimitiveContainers{MapOfStringToBool: map[string]bool{}},
wire.NewValueStruct(wire.Struct{Fields: []wire.Field{{
//.........这里部分代码省略.........
开发者ID:thriftrw,项目名称:thriftrw-go,代码行数:101,代码来源:container_test.go
示例12: TestListOfStructs
func TestListOfStructs(t *testing.T) {
tests := []struct {
s ts.Graph
v wire.Value
}{
{
ts.Graph{Edges: []*ts.Edge{}},
singleFieldStruct(1, wire.NewValueList(
wire.ValueListFromSlice(wire.TStruct, nil),
)),
},
{
ts.Graph{Edges: []*ts.Edge{
{
StartPoint: &ts.Point{X: 1.0, Y: 2.0},
EndPoint: &ts.Point{X: 3.0, Y: 4.0},
},
{
StartPoint: &ts.Point{X: 5.0, Y: 6.0},
EndPoint: &ts.Point{X: 7.0, Y: 8.0},
},
{
StartPoint: &ts.Point{X: 9.0, Y: 10.0},
EndPoint: &ts.Point{X: 11.0, Y: 12.0},
},
}},
singleFieldStruct(1, wire.NewValueList(
wire.ValueListFromSlice(wire.TStruct, []wire.Value{
wire.NewValueStruct(wire.Struct{Fields: []wire.Field{
{
ID: 1,
Value: wire.NewValueStruct(wire.Struct{Fields: []wire.Field{
{ID: 1, Value: wire.NewValueDouble(1.0)},
{ID: 2, Value: wire.NewValueDouble(2.0)},
}}),
},
{
ID: 2,
Value: wire.NewValueStruct(wire.Struct{Fields: []wire.Field{
{ID: 1, Value: wire.NewValueDouble(3.0)},
{ID: 2, Value: wire.NewValueDouble(4.0)},
}}),
},
}}),
wire.NewValueStruct(wire.Struct{Fields: []wire.Field{
{
ID: 1,
Value: wire.NewValueStruct(wire.Struct{Fields: []wire.Field{
{ID: 1, Value: wire.NewValueDouble(5.0)},
{ID: 2, Value: wire.NewValueDouble(6.0)},
}}),
},
{
ID: 2,
Value: wire.NewValueStruct(wire.Struct{Fields: []wire.Field{
{ID: 1, Value: wire.NewValueDouble(7.0)},
{ID: 2, Value: wire.NewValueDouble(8.0)},
}}),
},
}}),
wire.NewValueStruct(wire.Struct{Fields: []wire.Field{
{
ID: 1,
Value: wire.NewValueStruct(wire.Struct{Fields: []wire.Field{
{ID: 1, Value: wire.NewValueDouble(9.0)},
{ID: 2, Value: wire.NewValueDouble(10.0)},
}}),
},
{
ID: 2,
Value: wire.NewValueStruct(wire.Struct{Fields: []wire.Field{
{ID: 1, Value: wire.NewValueDouble(11.0)},
{ID: 2, Value: wire.NewValueDouble(12.0)},
}}),
},
}}),
}),
)),
},
}
for _, tt := range tests {
assertRoundTrip(t, &tt.s, tt.v, "Graph")
}
}
开发者ID:thriftrw,项目名称:thriftrw-go,代码行数:85,代码来源:container_test.go
示例13: ReadValue
// ReadValue reads a value off the given type off the wire starting at the
// given offset.
//
// Returns the Value, the new offset, and an error if there was a decode error.
func (br *Reader) ReadValue(t wire.Type, off int64) (wire.Value, int64, error) {
switch t {
case wire.TBool:
b, off, err := br.readByte(off)
if err != nil {
return wire.Value{}, off, err
}
if b != 0 && b != 1 {
return wire.Value{}, off, decodeErrorf(
"invalid value %q for bool field", b,
)
}
return wire.NewValueBool(b == 1), off, nil
case wire.TI8:
b, off, err := br.readByte(off)
return wire.NewValueI8(int8(b)), off, err
case wire.TDouble:
value, off, err := br.readInt64(off)
d := math.Float64frombits(uint64(value))
return wire.NewValueDouble(d), off, err
case wire.TI16:
n, off, err := br.readInt16(off)
return wire.NewValueI16(n), off, err
case wire.TI32:
n, off, err := br.readInt32(off)
return wire.NewValueI32(n), off, err
case wire.TI64:
n, off, err := br.readInt64(off)
return wire.NewValueI64(n), off, err
case wire.TBinary:
v, off, err := br.readBytes(off)
return wire.NewValueBinary(v), off, err
case wire.TStruct:
s, off, err := br.readStruct(off)
return wire.NewValueStruct(s), off, err
case wire.TMap:
m, off, err := br.readMap(off)
return wire.NewValueMap(m), off, err
case wire.TSet:
s, off, err := br.readSet(off)
return wire.NewValueSet(s), off, err
case wire.TList:
l, off, err := br.readList(off)
return wire.NewValueList(l), off, err
default:
return wire.Value{}, off, decodeErrorf("unknown ttype %v", t)
}
}
开发者ID:thriftrw,项目名称:thriftrw-go,代码行数:65,代码来源:reader.go
示例14: vlist
func vlist(typ wire.Type, vs ...wire.Value) wire.Value {
return wire.NewValueList(wire.ValueListFromSlice(typ, vs))
}
开发者ID:thriftrw,项目名称:thriftrw-go,代码行数:3,代码来源:value_test.go
示例15: TestEnumContainers
func TestEnumContainers(t *testing.T) {
tests := []struct {
s tc.EnumContainers
v wire.Value
}{
{
tc.EnumContainers{
ListOfEnums: []te.EnumDefault{
te.EnumDefaultFoo,
te.EnumDefaultBar,
},
},
singleFieldStruct(1, wire.NewValueList(
wire.ValueListFromSlice(wire.TI32, []wire.Value{
wire.NewValueI32(0),
wire.NewValueI32(1),
}),
)),
},
{
tc.EnumContainers{
SetOfEnums: map[te.EnumWithValues]struct{}{
te.EnumWithValuesX: {},
te.EnumWithValuesZ: {},
},
},
singleFieldStruct(2, wire.NewValueSet(
wire.ValueListFromSlice(wire.TI32, []wire.Value{
wire.NewValueI32(123),
wire.NewValueI32(789),
}),
)),
},
{
tc.EnumContainers{
MapOfEnums: map[te.EnumWithDuplicateValues]int32{
te.EnumWithDuplicateValuesP: 123,
te.EnumWithDuplicateValuesQ: 456,
},
},
singleFieldStruct(3, wire.NewValueMap(
wire.MapItemListFromSlice(wire.TI32, wire.TI32, []wire.MapItem{
{Key: wire.NewValueI32(0), Value: wire.NewValueI32(123)},
{Key: wire.NewValueI32(-1), Value: wire.NewValueI32(456)},
}),
)),
},
{
// this is the same as the one above except we're using "R" intsead
// of "P" (they both have the same value)
tc.EnumContainers{
MapOfEnums: map[te.EnumWithDuplicateValues]int32{
te.EnumWithDuplicateValuesR: 123,
te.EnumWithDuplicateValuesQ: 456,
},
},
singleFieldStruct(3, wire.NewValueMap(
wire.MapItemListFromSlice(wire.TI32, wire.TI32, []wire.MapItem{
{Key: wire.NewValueI32(0), Value: wire.NewValueI32(123)},
{Key: wire.NewValueI32(-1), Value: wire.NewValueI32(456)},
}),
)),
},
}
for _, tt := range tests {
assertRoundTrip(t, &tt.s, tt.v, "EnumContainers")
}
}
开发者ID:thriftrw,项目名称:thriftrw-go,代码行数:70,代码来源:container_test.go
注:本文中的go/uber/org/thriftrw/wire.NewValueList函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论