本文整理汇总了Golang中mojo/public/go/bindings.Decoder.StartStruct方法的典型用法代码示例。如果您正苦于以下问题:Golang Decoder.StartStruct方法的具体用法?Golang Decoder.StartStruct怎么用?Golang Decoder.StartStruct使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类mojo/public/go/bindings.Decoder
的用法示例。
在下文中一共展示了Decoder.StartStruct方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: Decode
func (s *KeysByType) Decode(decoder *bindings.Decoder) error {
header, err := decoder.StartStruct()
if err != nil {
return err
}
index := sort.Search(len(keysByType_Versions), func(i int) bool {
return keysByType_Versions[i].ElementsOrVersion >= header.ElementsOrVersion
})
if index < len(keysByType_Versions) {
if keysByType_Versions[index].ElementsOrVersion > header.ElementsOrVersion {
index--
}
expectedSize := keysByType_Versions[index].Size
if expectedSize != header.Size {
return &bindings.ValidationError{bindings.UnexpectedStructHeader,
fmt.Sprintf("invalid struct header size: should be %d, but was %d", expectedSize, header.Size),
}
}
}
if header.ElementsOrVersion >= 0 {
pointer0, err := decoder.ReadPointer()
if err != nil {
return err
}
if pointer0 == 0 {
s.Interfaces = nil
} else {
s.Interfaces = new([]string)
len0, err := decoder.StartArray(64)
if err != nil {
return err
}
(*s.Interfaces) = make([]string, len0)
for i0 := uint32(0); i0 < len0; i0++ {
pointer1, err := decoder.ReadPointer()
if err != nil {
return err
}
if pointer1 == 0 {
return &bindings.ValidationError{bindings.UnexpectedNullPointer, "unexpected null pointer"}
} else {
value1, err := decoder.ReadString()
if err != nil {
return err
}
(*s.Interfaces)[i0] = value1
}
}
if err := decoder.Finish(); err != nil {
return err
}
}
}
if header.ElementsOrVersion >= 0 {
pointer0, err := decoder.ReadPointer()
if err != nil {
return err
}
if pointer0 == 0 {
s.Structs = nil
} else {
s.Structs = new([]string)
len0, err := decoder.StartArray(64)
if err != nil {
return err
}
(*s.Structs) = make([]string, len0)
for i0 := uint32(0); i0 < len0; i0++ {
pointer1, err := decoder.ReadPointer()
if err != nil {
return err
}
if pointer1 == 0 {
return &bindings.ValidationError{bindings.UnexpectedNullPointer, "unexpected null pointer"}
} else {
value1, err := decoder.ReadString()
if err != nil {
return err
}
(*s.Structs)[i0] = value1
}
}
if err := decoder.Finish(); err != nil {
return err
}
}
}
if header.ElementsOrVersion >= 0 {
pointer0, err := decoder.ReadPointer()
if err != nil {
return err
}
if pointer0 == 0 {
s.Unions = nil
} else {
s.Unions = new([]string)
len0, err := decoder.StartArray(64)
if err != nil {
return err
}
//.........这里部分代码省略.........