当前位置: 首页>>代码示例>>Golang>>正文


Golang bytes.Add函数代码示例

本文整理汇总了Golang中bytes.Add函数的典型用法代码示例。如果您正苦于以下问题:Golang Add函数的具体用法?Golang Add怎么用?Golang Add使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了Add函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。

示例1: readUntilCrLf

func readUntilCrLf(con *net.TCPConn) (line []byte, err os.Error) {

	buf := make([]byte, 1)
	var data []byte
	crSeen := false

	for {
		_, err := con.Read(buf)
		if err != nil {
			if err == os.EOF {
				break
			} else {
				return nil, err
			}
		}
		if crSeen {
			if buf[0] == 10 {
				break
			} else {
				crSeen = false
				data = bytes.Add(data, buf)
			}
		} else {
			if buf[0] == 13 {
				crSeen = true
			} else {
				data = bytes.Add(data, buf)
			}
		}
	}

	return data, nil
}
开发者ID:jmettraux,项目名称:glaive,代码行数:33,代码来源:main.go

示例2: setPrefix

// Extract regular text from the beginning of the pattern.
// That text can be used by doExecute to speed up matching.
func (re *Regexp) setPrefix() {
	var b []byte
	var utf = make([]byte, utf8.UTFMax)
	// First instruction is start; skip that.
	i := re.inst.At(0).(instr).next().index()
Loop:
	for i < re.inst.Len() {
		inst := re.inst.At(i).(instr)
		// stop if this is not a char
		if inst.kind() != _CHAR {
			break
		}
		// stop if this char can be followed by a match for an empty string,
		// which includes closures, ^, and $.
		switch re.inst.At(inst.next().index()).(instr).kind() {
		case _BOT, _EOT, _ALT:
			break Loop
		}
		n := utf8.EncodeRune(inst.(*_Char).char, utf)
		b = bytes.Add(b, utf[0:n])
		i = inst.next().index()
	}
	// point prefixStart instruction to first non-CHAR after prefix
	re.prefixStart = re.inst.At(i).(instr)
	re.prefixBytes = b
	re.prefix = string(b)
}
开发者ID:ivanwyc,项目名称:google-go,代码行数:29,代码来源:regexp.go

示例3: UnmarshalJSON

// UnmarshalJSON sets *m to a copy of data.
func (m *RawMessage) UnmarshalJSON(data []byte) os.Error {
	if m == nil {
		return os.NewError("json.RawMessage: UnmarshalJSON on nil pointer")
	}
	*m = bytes.Add((*m)[0:0], data)
	return nil
}
开发者ID:rapgamer,项目名称:golang-china,代码行数:8,代码来源:stream.go

示例4: readHandshake

// readHandshake reads the next handshake message from
// the record layer.
// c.in.Mutex < L; c.out.Mutex < L.
func (c *Conn) readHandshake() (interface{}, os.Error) {
	for c.hand.Len() < 4 {
		if c.err != nil {
			return nil, c.err
		}
		c.readRecord(recordTypeHandshake)
	}

	data := c.hand.Bytes()
	n := int(data[1])<<16 | int(data[2])<<8 | int(data[3])
	if n > maxHandshake {
		c.sendAlert(alertInternalError)
		return nil, c.err
	}
	for c.hand.Len() < 4+n {
		if c.err != nil {
			return nil, c.err
		}
		c.readRecord(recordTypeHandshake)
	}
	data = c.hand.Next(4 + n)
	var m handshakeMessage
	switch data[0] {
	case typeClientHello:
		m = new(clientHelloMsg)
	case typeServerHello:
		m = new(serverHelloMsg)
	case typeCertificate:
		m = new(certificateMsg)
	case typeCertificateRequest:
		m = new(certificateRequestMsg)
	case typeCertificateStatus:
		m = new(certificateStatusMsg)
	case typeServerHelloDone:
		m = new(serverHelloDoneMsg)
	case typeClientKeyExchange:
		m = new(clientKeyExchangeMsg)
	case typeCertificateVerify:
		m = new(certificateVerifyMsg)
	case typeNextProtocol:
		m = new(nextProtoMsg)
	case typeFinished:
		m = new(finishedMsg)
	default:
		c.sendAlert(alertUnexpectedMessage)
		return nil, alertUnexpectedMessage
	}

	// The handshake message unmarshallers
	// expect to be able to keep references to data,
	// so pass in a fresh copy that won't be overwritten.
	data = bytes.Add(nil, data)

	if !m.unmarshal(data) {
		c.sendAlert(alertUnexpectedMessage)
		return nil, alertUnexpectedMessage
	}
	return m, nil
}
开发者ID:GNA-SERVICES-INC,项目名称:MoNGate,代码行数:62,代码来源:conn.go

示例5: EncodeSOA

func EncodeSOA(soa SOArecord) []byte {
	var (
		result []byte
		temp32 []byte
	)
	mname := Encode(soa.Mname)
	length := len(mname)
	rname := Encode(soa.Rname)
	length = length + len(rname)
	length = length + (5 * 4) // Five 32-bits counter at the end
	/* "It's probably cleaner to write to a bytes.Buffer than to
	repeatedly call bytes.Add." Russ Cox, go-nuts ML */
	result = bytes.Add(result, mname)
	result = bytes.Add(result, rname)
	temp32 = make([]byte, 4)
	binary.BigEndian.PutUint32(temp32, soa.Serial)
	result = bytes.Add(result, temp32)
	binary.BigEndian.PutUint32(temp32, soa.Refresh)
	result = bytes.Add(result, temp32)
	binary.BigEndian.PutUint32(temp32, soa.Retry)
	result = bytes.Add(result, temp32)
	binary.BigEndian.PutUint32(temp32, soa.Expire)
	result = bytes.Add(result, temp32)
	binary.BigEndian.PutUint32(temp32, soa.Minimum)
	result = bytes.Add(result, temp32)
	return result[0:length]
}
开发者ID:bortzmeyer,项目名称:grong,代码行数:27,代码来源:types.go

示例6: sendMessageToReply

// To use with messages that receive a response from database
// 'opQuery', 'opGetMore'.
func (self *Connection) sendMessageToReply(m message, reqID int32) os.Error {
	body := m.Bytes()
	h := header(msgHeader{int32(len(body) + _HEADER_SIZE), reqID, 0, m.OpCode()})

	msg := bytes.Add(h, body)
	_, err := self.conn.Write(msg)

	return err
}
开发者ID:anvie,项目名称:gomongo,代码行数:11,代码来源:collection.go

示例7: Decode

func Decode(b []byte) []byte {
	r := make([]byte, len(b)*2)[0:0]
	for {
		if b[0] != 128 {
			break
		}
		if b[1] == 3 {
			break
		}
		l := int(b[2]) + (int(b[3]) << 8) + (int(b[4]) << 16) + 6
		if b[1] == 1 {
			r = bytes.Add(r, b[6:l])
		} else {
			r = bytes.Add(r, hex.Encode(b[6:l]))
		}
		b = b[l:]
	}
	return r
}
开发者ID:MattDavisRV,项目名称:pdfreader,代码行数:19,代码来源:pfb.go

示例8: writeMessage

func (c *Connection) writeMessage(m message) os.Error {
	body := m.Bytes()
	hb := header(int32(len(body)+16), m.RequestID(), 0, m.OpCode())
	msg := bytes.Add(hb, body)

	_, err := c.conn.Write(msg)

	last_req = m.RequestID()
	return err
}
开发者ID:patrickxb,项目名称:gomongo,代码行数:10,代码来源:mongo.go

示例9: Bytes

func (self *_Object) Bytes() []byte {
	buf := bytes.NewBuffer([]byte{})
	for k, v := range self.value {
		buf.WriteByte(byte(v.Kind()))
		buf.WriteString(k)
		buf.WriteByte(0)
		buf.Write(v.Bytes())
	}
	buf.WriteByte(0)

	l := buf.Len() + 4
	w32 := make([]byte, _WORD32)
	pack.PutUint32(w32, uint32(l))
	return bytes.Add(w32, buf.Bytes())
}
开发者ID:nstott,项目名称:gomongo,代码行数:15,代码来源:bson.go

示例10: Repeat

func Repeat(alu []byte, n int) {
	buf := bytes.Add(alu, alu)
	off := 0
	for n > 0 {
		m := n
		if m > Line {
			m = Line
		}
		buf1 := out.NextWrite(m + 1)
		copy(buf1, buf[off:])
		buf1[m] = '\n'
		if off += m; off >= len(alu) {
			off -= len(alu)
		}
		n -= m
	}
}
开发者ID:IntegerCompany,项目名称:linaro-android-gcc,代码行数:17,代码来源:fasta.go

示例11: simpleQuery

func (self *Client) simpleQuery(command int, version int, size int, body []byte) ([]byte, os.Error) {
	conn, err := self.connect()
	if err != nil {
		return nil, err
	}

	header := make([]byte, 8+len(body))
	binary.BigEndian.PutUint16(header[0:2], uint16(command))
	binary.BigEndian.PutUint16(header[2:4], uint16(version))
	binary.BigEndian.PutUint32(header[4:8], uint32(size))

	request := bytes.Add(header, body)

	_, err = conn.Write(request)
	if err != nil {
		return nil, err
	}

	return self.getResponse(conn)
}
开发者ID:kpumuk,项目名称:gosphinx,代码行数:20,代码来源:sphinx.go

示例12: ReadAll

// ReadAll takes an os.File as it's argument and reads in all of it until 
// it signals to stop with an EOF in 
func ReadAll(file * os.File) ([]byte, os.Error) { 
  const BUFSIZE = 1024
  result    := make([]byte, 0)
  buf       := make([]byte, BUFSIZE)
  var sub []byte 
  for { // ever     
    count, err2 := file.Read(buf)
    sub          = buf[0:count]
    // get right slice to append to result
    // append bytes to result
    if count > 0 { 
      result = bytes.Add(result, sub)
    }
    // if EOF, return the result. 
    if err2 == os.EOF { return result, nil }
    // on any other error return nil 
    if err2 != nil    { return nil   , err2 }    
  }
  // should not get here  
  return nil, os.NewError("Can't happen?!");
}
开发者ID:beoran,项目名称:fungo,代码行数:23,代码来源:gut.go

示例13: TestRecords

func TestRecords(t *testing.T) {
	for i, test := range recordsTests {
		buf := bytes.NewBuffer(test.raw)
		content, reqId, kind, err := readRecord(buf)
		if err != nil {
			t.Errorf("%d error reading record: %s", i, err.String())
			goto write
		}
		for buf.Len() > 0 {
			moreContent, _, _, err := readRecord(buf)
			if err != nil {
				t.Errorf("%d error reading additional record: %s", i, err.String())
				goto write
			}
			content = bytes.Add(content, moreContent)
		}
		if kind != test.kind {
			t.Errorf("%d got kind %d expected %d", i, kind, test.kind)
		}
		if reqId != test.reqId {
			t.Errorf("%d got request ID %d expected %d", i, kind, test.kind)
		}
		if !bytes.Equal(content, test.content) {
			t.Errorf("%d read wrong content", i)
		}
	write:
		buf.Reset()
		c := &lockReadWriteCloser{ReadWriteCloser: &nilCloser{buf}}
		err = writeRecord(c, test.kind, test.reqId, test.content)
		if err != nil {
			t.Errorf("%d error writing record: %s", i, err.String())
			continue
		}
		if !bytes.Equal(buf.Bytes(), test.raw) {
			t.Errorf("%d wrote wrong content", i)
		}
	}
}
开发者ID:gnanderson,项目名称:fcgigo,代码行数:38,代码来源:fcgi_test.go

示例14: TestNextValueBig

func TestNextValueBig(t *testing.T) {
	var scan scanner
	item, rest, err := nextValue(jsonBig, &scan)
	if err != nil {
		t.Fatalf("nextValue: ", err)
	}
	if len(item) != len(jsonBig) || &item[0] != &jsonBig[0] {
		t.Errorf("invalid item: %d %d", len(item), len(jsonBig))
	}
	if len(rest) != 0 {
		t.Errorf("invalid rest: %d", len(rest))
	}

	item, rest, err = nextValue(bytes.Add(jsonBig, []byte("HELLO WORLD")), &scan)
	if err != nil {
		t.Fatalf("nextValue extra: ", err)
	}
	if len(item) != len(jsonBig) {
		t.Errorf("invalid item: %d %d", len(item), len(jsonBig))
	}
	if string(rest) != "HELLO WORLD" {
		t.Errorf("invalid rest: %d", len(rest))
	}
}
开发者ID:rapgamer,项目名称:golang-china,代码行数:24,代码来源:scanner_test.go

示例15: ReadContinuedLineBytes

// ReadContinuedLineBytes is like ReadContinuedLine but
// returns a []byte instead of a string.
func (r *Reader) ReadContinuedLineBytes() ([]byte, os.Error) {
	// Read the first line.
	line, err := r.ReadLineBytes()
	if err != nil {
		return line, err
	}
	if len(line) == 0 { // blank line - no continuation
		return line, nil
	}
	line = trim(line)

	// Look for a continuation line.
	c, err := r.R.ReadByte()
	if err != nil {
		// Delay err until we read the byte next time.
		return line, nil
	}
	if c != ' ' && c != '\t' {
		// Not a continuation.
		r.R.UnreadByte()
		return line, nil
	}

	// Read continuation lines.
	for {
		// Consume leading spaces; one already gone.
		for {
			c, err = r.R.ReadByte()
			if err != nil {
				break
			}
			if c != ' ' && c != '\t' {
				r.R.UnreadByte()
				break
			}
		}
		var cont []byte
		cont, err = r.ReadLineBytes()
		cont = trim(cont)
		line = bytes.Add(line, space)
		line = bytes.Add(line, cont)
		if err != nil {
			break
		}

		// Check for leading space on next line.
		if c, err = r.R.ReadByte(); err != nil {
			break
		}
		if c != ' ' && c != '\t' {
			r.R.UnreadByte()
			break
		}
	}

	// Delay error until next call.
	if len(line) > 0 {
		err = nil
	}
	return line, err
}
开发者ID:GNA-SERVICES-INC,项目名称:MoNGate,代码行数:63,代码来源:reader.go


注:本文中的bytes.Add函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。