當前位置: 首頁>>代碼示例>>Golang>>正文


Golang marshal.Writer類代碼示例

本文整理匯總了Golang中github.com/funny-falcon/go-iproto/marshal.Writer的典型用法代碼示例。如果您正苦於以下問題:Golang Writer類的具體用法?Golang Writer怎麽用?Golang Writer使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。


在下文中一共展示了Writer類的5個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。

示例1: structWriter

func (sw *TWriter) structWriter(w *marshal.Writer, v reflect.Value) {
	w.IntUint32(sw.structCnt(v))
	flds := sw.Writer.Flds
	n := len(flds)
	if sw.Tail != NoTail {
		n -= 1
	}
	for i := 0; i < n; i++ {
		fs := &flds[i]
		fs.WithSize(w, v.Field(fs.I), (*marshal.Writer).Intvar)
	}
	switch sw.Tail {
	case NoTail:
	case Tail:
		fs := &flds[n]
		fv := v.Field(n)
		l := fv.Len()
		for i := 0; i < l; i++ {
			val := fv.Index(i)
			fs.WithSize(w, val, (*marshal.Writer).Intvar)
		}
	case TailSplit:
		fs := &flds[n]
		fv := v.Field(n)
		l := fv.Len()
		fss := fs.TWriter.Flds
		fl := len(fss)
		for i := 0; i < l; i++ {
			str := fv.Index(i)
			for j := 0; j < fl; j++ {
				fss[i].WithSize(w, str.Field(i), (*marshal.Writer).Intvar)
			}
		}
	}
}
開發者ID:moxian,項目名稱:go-iproto,代碼行數:35,代碼來源:writer.go

示例2: IWrite

func (i DeleteReq) IWrite(w *marshal.Writer) {
	w.Uint32(i.Space)
	var flags uint32
	if i.Return {
		flags = 1
	}
	w.Uint32(flags)
	WriteTuple(w, i.Key)
}
開發者ID:moxian,項目名稱:go-iproto,代碼行數:9,代碼來源:modify.go

示例3: IWrite

func (b Body) IWrite(w *marshal.Writer) {
	w.Bytes([]byte(b))
}
開發者ID:moxian,項目名稱:go-iproto,代碼行數:3,代碼來源:request.go

示例4: WriteTuple

func WriteTuple(w *marshal.Writer, i interface{}) {
	switch o := i.(type) {
	case nil:
		return
	case uint8:
		w.Uint32(1)
		w.Uint8(1)
		w.Uint8(o)
	case int8:
		w.Uint32(1)
		w.Uint8(1)
		w.Int8(o)
	case uint16:
		w.Uint32(1)
		w.Uint8(2)
		w.Uint16(o)
	case int16:
		w.Uint32(1)
		w.Uint8(2)
		w.Int16(o)
	case uint32:
		w.Uint32(1)
		w.Uint8(4)
		w.Uint32(o)
	case int32:
		w.Uint32(1)
		w.Uint8(4)
		w.Int32(o)
	case uint64:
		w.Uint32(1)
		w.Uint8(8)
		w.Uint64(o)
	case int64:
		w.Uint32(1)
		w.Uint8(8)
		w.Int64(o)
	case float32:
		w.Uint32(1)
		w.Uint8(4)
		w.Float32(o)
	case float64:
		w.Uint32(1)
		w.Uint8(8)
		w.Float64(o)
	case string:
		w.Uint32(1)
		w.Intvar(len(o))
		w.String(o)
	case []byte:
		w.Uint32(1)
		w.Intvar(len(o))
		w.Bytes(o)
	case []interface{}:
		w.IntUint32(len(o))
		for _, v := range o {
			w.WriteWithSize(v, (*marshal.Writer).Intvar)
		}
	default:
		val := reflect.ValueOf(i)
		rt := val.Type()
		wr := writer(rt)
		wr.Write(w, val)
	}
	return
}
開發者ID:moxian,項目名稱:go-iproto,代碼行數:65,代碼來源:writer.go

示例5: IWrite

func (s SelectReq) IWrite(w *marshal.Writer) {
	w.Uint32(s.Space)
	w.Uint32(s.Index)
	w.Uint32(s.Offset)
	cnt := CountKeys(s.Keys)
	if s.Limit >= 0 {
		w.Int32(s.Limit)
	} else if s.Limit == SelectN {
		w.Int32(int32(cnt))
	} else {
		w.Int32(1<<31 - 1)
	}
	w.IntUint32(cnt)
	WriteKeys(w, s.Keys)
}
開發者ID:moxian,項目名稱:go-iproto,代碼行數:15,代碼來源:select.go


注:本文中的github.com/funny-falcon/go-iproto/marshal.Writer類示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。