HasSuffix
发布者:admin 发表于:417天前 阅读数:542 评论:0

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

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

示例1: Read

// Read reads and decodes quoted-printable data from the underlying reader.
func (r *Reader) Read(p []byte) (int, error) {
    // Deviations from RFC 2045:
    // 1. in addition to "=\r\n", "=\n" is also treated as soft line break.
    // 2. it will pass through a '\r' or '\n' not preceded by '=', consistent
    //    with other broken QP encoders & decoders.
    var n int
    var err error
    for len(p) > 0 {
        if len(r.line) == 0 {
            if err = r.Fn(); err != nil {
                return n, err
            }
            r.line, r.rerr = r.br.ReadSlice('\n')
            r.gerr.addUnrecover(r.rerr)

            // Does the line end in CRLF instead of just LF?
            hasLF := bytes.HasSuffix(r.line, lf)
            hasCR := bytes.HasSuffix(r.line, crlf)
            wholeLine := r.line
            r.line = bytes.TrimRightFunc(wholeLine, isQPDiscardWhitespace)
            if bytes.HasSuffix(r.line, softSuffix) {
                rightStripped := wholeLine[len(r.line):]
                r.line = r.line[:len(r.line)-1]
                if !bytes.HasPrefix(rightStripped, lf) && !bytes.HasPrefix(rightStripped, crlf) {
                    r.rerr = fmt.Errorf("quotedprintable: invalid bytes after =: %q", rightStripped)
                    r.gerr.add(r.rerr)
                }
            } else if hasLF {
                if hasCR {
                    r.line = append(r.line, '\r', '\n')
                } else {
                    r.line = append(r.line, '\n')
                }
            }
            continue
        }
        b := r.line[0]

        switch {
        case b == '=':
            b, err = readHexByte(r.line[1:])
            if err != nil {
                b = '='
                r.gerr.add(err)
                break // this modification allow bad email to be parsed too
                //return n, err
            }
            r.line = r.line[2:] // 2 of the 3; other 1 is done below
        case b == '\t' || b == '\r' || b == '\n':
        case b < ' ' || b > '~':
            //return n, fmt.Errorf("quotedprintable: invalid unescaped byte 0x%02x in body", b)
            r.gerr.add(fmt.Errorf("quotedprintable: invalid unescaped byte 0x%02x in body", b))
        }
        p[0] = b
        p = p[1:]
        r.line = r.line[1:]
        n++
    }
    return n, r.Fn()
}

开发者ID:cention-sany,项目名称:mime,代码行数:61,代码来源:reader.go

示例2: setKeys

// setKeys sets n random keys and values across each machine in a
// cluster and returns these values to later be checked with checkKeys.
// If all the values don't get set due to a machine that is down and
// error is NOT returned. An error is returned if no keys are able to be
// set.
func setKeys(cluster platform.Cluster, n int) (map[string]string, error) {
    var written = map[string]string{}
    for _, m := range cluster.Machines() {
        for i := 0; i < n; i++ {
            // random key and value, may overwrwite previous sets if
            // collision which is fine
            key := strconv.Itoa(rand.Int())[0:3]
            value := strconv.Itoa(rand.Int())[0:3]

            cmd := cluster.NewCommand("curl", "-w", "%{http_code}", "-s", fmt.Sprintf("http://%v:2379/v2/keys/%v", m.IP(), key), "-XPUT", "-d", "value="+value)
            b, err := cmd.Output()
            if err != nil {
                continue
            }

            // check for 201 or 200 resp header
            if !bytes.HasSuffix(b, []byte("200")) && !bytes.HasSuffix(b, []byte("201")) {
                continue
            }

            written[key] = value
        }
    }
    if len(written) == 0 {
        return nil, fmt.Errorf("failed to write any keys")
    }

    plog.Infof("wrote %v keys", len(written))
    return written, nil
}

开发者ID:hanscj1,项目名称:mantle,代码行数:35,代码来源:util.go

示例3: isDate

// isDate detects if we see one of the following formats:
// August 12, 2014
// Aug 10, 2014  1:02 PM EDT
// Sunday August 10 2014
// Sunday, August 10, 2014 2:36 PM EDT
// Monday, August 11, 2014 9:18:59 AM
// Sat., Feb. 7, 2015 04:35 PM
// Tue., Apr. 21, 2015 4:17 p.m.
func isDate(line []byte) bool {
    // Trim dots 'n periods
    line = bytes.Trim(line, "• .\u00a0")
    // check if it starts with a day or month
    dateStart := false
    for _, day := range daysOfWeek {
        if bytes.HasPrefix(line, day) {
            dateStart = true
            break
        }
    }
    if !dateStart {
        for _, day := range daysOfWeekShort {
            if bytes.HasPrefix(line, day) {
                dateStart = true
                break
            }
        }
    }
    if !dateStart {
        for _, month := range months {
            if bytes.HasPrefix(line, month) {
                dateStart = true
                break
            }
        }
    }

    if !dateStart {
        return false
    }

    // check if it ends with a timezone/daytime/year
    dateEnd := false
    for _, ap := range amPM {
        if bytes.HasSuffix(line, ap) {
            dateEnd = true
            break
        }
    }
    if !dateEnd {
        // newshound started in 2012. adjust if you want older data
        for i := 2012; i <= time.Now().Year(); i++ {
            if bytes.HasSuffix(line, []byte(strconv.Itoa(i))) {
                dateEnd = true
                break
            }
        }
    }
    if !dateEnd {
        for _, zone := range timezones {
            if bytes.HasSuffix(line, zone) {
                dateEnd = true
                break
            }
        }
    }

    return dateEnd
}

开发者ID:jacqui,项目名称:newshound,代码行数:68,代码来源:alert.go

示例4: codeLines

// codeLines takes a source file and returns the lines that
// span the byte range specified by start and end.
// It discards lines that end in "OMIT" and in "OMIT -->"
func codeLines(src []byte, start, end int) (lines []byte) {
    startLine := 1
    for i, b := range src {
        if i == start {
            break
        }
        if b == '\n' {
            startLine++
        }
    }
    s := bufio.NewScanner(bytes.NewReader(src[start:end]))
    for n := startLine; s.Scan(); n++ {
        l := s.Bytes()
        if bytes.HasSuffix(l, []byte("OMIT")) {
            continue
        }
        if bytes.HasSuffix(l, []byte("OMIT -->")) {
            continue
        }
        lines = append(lines, l...)
        lines = append(lines, '\n')
    }
    // TODO(miek): trim leading and trailing blanklines
    return
}

开发者ID:prodigeni,项目名称:mmark,代码行数:28,代码来源:code.go

示例5: equivalent

// equivalent does a linewise comparison of a and b.
// For each line:
//    got exactly equals want OR
//    want ends in " //substr" and is a substring of got OR
//    want ends in " //slashes" and runtime.GOOS == "windows" and got equals want with its slashes swapped for backslashes
// Otherwise equivalent returns false.
func equivalent(got, want []byte) bool {
    var (
        gotLines  = bytes.Split(got, newline)
        wantLines = bytes.Split(want, newline)
        substr    = []byte(" //substr")
        slashes   = []byte(" //slashes")
        slash     = []byte{'/'}
        gg, ww    []byte
    )

    if len(gotLines) != len(wantLines) {
        return false
    }

    for i := range gotLines {
        gg, ww = gotLines[i], wantLines[i]
        if bytes.HasSuffix(ww, slashes) {
            ww = bytes.Replace(ww[:len(ww)-len(slashes)], slash, []byte{filepath.Separator}, -1)
        }
        if !(bytes.Equal(gg, ww) || bytes.HasSuffix(ww, substr) && bytes.Contains(gg, ww[:len(ww)-len(substr)])) {
            return false
        }
    }
    return true
}

开发者ID:philipmulcahy,项目名称:godebug,代码行数:31,代码来源:endtoend_cli_test.go

示例6: checkPreformatted

// Blocks of ``` need to have blank lines on both sides or they don't look
// right in HTML.
func checkPreformatted(filePath string, fileBytes []byte) ([]byte, error) {
    f := splitByPreformatted(fileBytes)
    f = append(fileBlocks{{false, []byte{}}}, f...)
    f = append(f, fileBlock{false, []byte{}})

    output := []byte(nil)
    for i := 1; i < len(f)-1; i++ {
        prev := &f[i-1]
        block := &f[i]
        next := &f[i+1]
        if !block.preformatted {
            continue
        }
        neededSuffix := []byte("\n\n")
        for !bytes.HasSuffix(prev.data, neededSuffix) {
            prev.data = append(prev.data, '\n')
        }
        for !bytes.HasSuffix(block.data, neededSuffix) {
            block.data = append(block.data, '\n')
            if bytes.HasPrefix(next.data, []byte("\n")) {
                // don't change the number of newlines unless needed.
                next.data = next.data[1:]
                if len(next.data) == 0 {
                    f = append(f[:i+1], f[i+2:]...)
                }
            }
        }
    }
    for _, block := range f {
        output = append(output, block.data...)
    }
    return output, nil
}

开发者ID:gabrielweyer,项目名称:kubernetes,代码行数:35,代码来源:preformatted.go

示例7: SetKeys

// setKeys sets n random keys and values across each machine in a
// cluster and returns these values to later be checked with checkKeys.
// If all the values don't get set due to a machine that is down and
// error is NOT returned. An error is returned if no keys are able to be
// set.
func SetKeys(cluster platform.Cluster, n int) (map[string]string, error) {
    var written = map[string]string{}
    for _, m := range cluster.Machines() {
        for i := 0; i < n; i++ {
            // random key and value, may overwrwite previous sets if
            // collision which is fine
            key := strconv.Itoa(rand.Int())[0:3]
            value := strconv.Itoa(rand.Int())[0:3]

            b, err := m.SSH(fmt.Sprintf("curl -s -w %%{http_code} -s http://127.0.0.1:2379/v2/keys/%v -XPUT -d value=%v", key, value))
            if err != nil {
                return nil, err
            }

            // check for 201 or 200 resp header
            if !bytes.HasSuffix(b, []byte("200")) && !bytes.HasSuffix(b, []byte("201")) {
                continue
            }

            written[key] = value
        }
    }
    if len(written) == 0 {
        return nil, fmt.Errorf("failed to write any keys")
    }

    plog.Infof("wrote %v keys", len(written))
    return written, nil
}

开发者ID:pwaller,项目名称:mantle,代码行数:34,代码来源:util.go

示例8: PutItem

func (m *fakeDDB) PutItem(input *dynamodb.PutItemInput) (*dynamodb.PutItemOutput, error) {
    m.assert.NotNil(input.Item[refAttr], "%s should have been present", refAttr)
    m.assert.NotNil(input.Item[refAttr].B, "key should have been a blob: %+v", input.Item[refAttr])
    key := input.Item[refAttr].B
    if bytes.HasSuffix(key, dynamoVersionKey) {
        m.assert.NotNil(input.Item[numAttr], "%s should have been present", numAttr)
        m.assert.NotNil(input.Item[numAttr].S, "vers should have been a string: %+v", input.Item[numAttr])
        m.version = aws.StringValue(input.Item[numAttr].S)
        return &dynamodb.PutItemOutput{}, nil
    }
    m.assert.NotNil(input.Item[chunkAttr], "%s should have present", chunkAttr)
    m.assert.NotNil(input.Item[chunkAttr].B, "value should have been a blob: %+v", input.Item[chunkAttr])
    value := input.Item[chunkAttr].B

    mustNotExist := *(input.ConditionExpression) == valueNotExistsExpression
    current, present := m.data[string(key)]

    if mustNotExist && present {
        return nil, mockAWSError("ConditionalCheckFailedException")
    } else if !mustNotExist && !bytes.Equal(current.chunk, input.ExpressionAttributeValues[":prev"].B) {
        return nil, mockAWSError("ConditionalCheckFailedException")
    }

    m.put(key, value, noneValue)
    if !bytes.HasSuffix(key, dynamoRootKey) {
        m.numPuts++
    }

    return &dynamodb.PutItemOutput{}, nil
}

开发者ID:Richardphp,项目名称:noms,代码行数:30,代码来源:dynamo_store_fake.go

示例9: parseSessionFromBytes

func parseSessionFromBytes(b []byte) *session {
    var s session

    b = normalizeCRLF(b)

    if bytes.HasSuffix(b, newline) {
        b = b[:len(b)-1]
    }

    lines := bytes.Split(b, newline)
    lines = removeSessionComment(lines)

    for _, line := range lines {
        if bytes.HasSuffix(line, []byte{'\r'}) { // convert CRLF to LF
            line = line[:len(line)-1]
        }
        line = append(line, '\n')

        if bytes.HasPrefix(line, prompt) {
            s.input = append(s.input, line[len(prompt):]...)
        }
        s.fullSession = append(s.fullSession, line...)
    }

    return &s
}

开发者ID:ricardo-rossi,项目名称:godebug,代码行数:26,代码来源:endtoend_test.go

示例10: five_a

func five_a(body []byte) []byte {
    if bytes.HasSuffix(body, []byte("e")) && Measure(body[:len(body)-1]) > 1 {
        return body[:len(body)-1]
    } else if bytes.HasSuffix(body, []byte("e")) && Measure(body[:len(body)-1]) == 1 && !star_o(body[:len(body)-1]) {
        return body[:len(body)-1]
    }
    return body
}

开发者ID:solidfox,项目名称:gopher,代码行数:8,代码来源:stemmer.go

示例11: periodCheck

func periodCheck(line []byte) []byte {
    if len(line) > 0 &&
        !bytes.HasSuffix(bytes.TrimSpace(line), period) &&
        !bytes.HasSuffix(bytes.TrimSpace(line), comma) {
        line = append(line, periodWithSpace...)
    }
    return line
}

开发者ID:jacqui,项目名称:newshound,代码行数:8,代码来源:alert.go

示例12: Read

// Read reads and decodes quoted-printable data from the underlying reader.
func (r *Reader) Read(p []byte) (n int, err error) {
    // Deviations from RFC 2045:
    // 1. in addition to "=\r\n", "=\n" is also treated as soft line break.
    // 2. it will pass through a '\r' or '\n' not preceded by '=', consistent
    //    with other broken QP encoders & decoders.
    // 3. it accepts soft line-break (=) at end of message (issue 15486); i.e.
    //    the final byte read from the underlying reader is allowed to be '=',
    //    and it will be silently ignored.
    for len(p) > 0 {
        if len(r.line) == 0 {
            if r.rerr != nil {
                return n, r.rerr
            }
            r.line, r.rerr = r.br.ReadSlice('\n')

            // Does the line end in CRLF instead of just LF?
            hasLF := bytes.HasSuffix(r.line, lf)
            hasCR := bytes.HasSuffix(r.line, crlf)
            wholeLine := r.line
            r.line = bytes.TrimRightFunc(wholeLine, isQPDiscardWhitespace)
            if bytes.HasSuffix(r.line, softSuffix) {
                rightStripped := wholeLine[len(r.line):]
                r.line = r.line[:len(r.line)-1]
                if !bytes.HasPrefix(rightStripped, lf) && !bytes.HasPrefix(rightStripped, crlf) &&
                    !(len(rightStripped) == 0 && len(r.line) > 0 && r.rerr == io.EOF) {
                    r.rerr = fmt.Errorf("quotedprintable: invalid bytes after =: %q", rightStripped)
                }
            } else if hasLF {
                if hasCR {
                    r.line = append(r.line, '\r', '\n')
                } else {
                    r.line = append(r.line, '\n')
                }
            }
            continue
        }
        b := r.line[0]

        switch {
        case b == '=':
            b, err = readHexByte(r.line[1:])
            if err != nil {
                return n, err
            }
            r.line = r.line[2:] // 2 of the 3; other 1 is done below
        case b == '\t' || b == '\r' || b == '\n':
            break
        case b < ' ' || b > '~':
            return n, fmt.Errorf("quotedprintable: invalid unescaped byte 0x%02x in body", b)
        }
        p[0] = b
        p = p[1:]
        r.line = r.line[1:]
        n++
    }
    return n, nil
}

开发者ID:kuangchanglang,项目名称:go,代码行数:58,代码来源:reader.go

示例13: one_a

func one_a(body []byte) []byte {
    if bytes.HasSuffix(body, []byte("sses")) || bytes.HasSuffix(body, []byte("ies")) {
        return body[:len(body)-2]
    } else if bytes.HasSuffix(body, []byte("ss")) {
        return body
    } else if bytes.HasSuffix(body, []byte("s")) {
        return body[:len(body)-1]
    }
    return body
}

开发者ID:solidfox,项目名称:gopher,代码行数:10,代码来源:stemmer.go

示例14: Read

func (q *qpReader) Read(p []byte) (n int, err error) {
    for len(p) > 0 {
        if len(q.line) == 0 {
            if q.rerr != nil {
                return n, q.rerr
            }
            q.skipWhite = true
            q.line, q.rerr = q.br.ReadSlice('\n')

            // Does the line end in CRLF instead of just LF?
            hasLF := bytes.HasSuffix(q.line, lf)
            hasCR := bytes.HasSuffix(q.line, crlf)
            wholeLine := q.line
            q.line = bytes.TrimRightFunc(wholeLine, isQPDiscardWhitespace)
            if bytes.HasSuffix(q.line, softSuffix) {
                rightStripped := wholeLine[len(q.line):]
                q.line = q.line[:len(q.line)-1]
                if !bytes.HasPrefix(rightStripped, lf) && !bytes.HasPrefix(rightStripped, crlf) {
                    q.rerr = fmt.Errorf("multipart: invalid bytes after =: %q", rightStripped)
                }
            } else if hasLF {
                if hasCR {
                    q.line = append(q.line, '\r', '\n')
                } else {
                    q.line = append(q.line, '\n')
                }
            }
            continue
        }
        b := q.line[0]
        if q.skipWhite && isQPSkipWhiteByte(b) {
            q.line = q.line[1:]
            continue
        }
        q.skipWhite = false

        switch {
        case b == '=':
            b, err = q.readHexByte(q.line[1:])
            if err != nil {
                return n, err
            }
            q.line = q.line[2:] // 2 of the 3; other 1 is done below
        case b == '\t' || b == '\r' || b == '\n':
            break
        case b < ' ' || b > '~':
            return n, fmt.Errorf("multipart: invalid unescaped byte 0x%02x in quoted-printable body", b)
        }
        p[0] = b
        p = p[1:]
        q.line = q.line[1:]
        n++
    }
    return n, nil
}

开发者ID:serge-hulne,项目名称:golang,代码行数:55,代码来源:quotedprintable.go

示例15: ExampleHasSuffix

func ExampleHasSuffix() {
    fmt.Println(bytes.HasSuffix([]byte("Amigo"), []byte("go")))
    fmt.Println(bytes.HasSuffix([]byte("Amigo"), []byte("O")))
    fmt.Println(bytes.HasSuffix([]byte("Amigo"), []byte("Ami")))
    fmt.Println(bytes.HasSuffix([]byte("Amigo"), []byte("")))
    // Output:
    // true
    // false
    // false
    // true
}

开发者ID:achanda,项目名称:go,代码行数:11,代码来源:example_test.go

示例16: IsContainerized

// IsContainerized returns true if we are running inside a container.
func IsContainerized() (bool, error) {
    b, err := ioutil.ReadFile(proc1Cgroup)
    if err != nil {
        return false, err
    }
    for _, line := range bytes.Split(b, []byte{'\n'}) {
        if len(line) > 0 && !bytes.HasSuffix(line, []byte{'/'}) && !bytes.HasSuffix(line, []byte("init.scope")) {
            return true, nil
        }
    }
    return false, nil
}

开发者ID:CadeLaRen,项目名称:docker-3,代码行数:13,代码来源:operatingsystem_linux.go

示例17: TestReservedKeys

func (suite *LevelDBStoreTestSuite) TestReservedKeys() {
    // Apparently, the following:
    //  s := []byte("")
    //  s = append(s, 1, 2, 3)
    //  f := append(s, 10, 20, 30)
    //  g := append(s, 4, 5, 6)
    //
    // Results in both f and g being [1, 2, 3, 4, 5, 6]
    // This was happening to us here, so ldb.chunkPrefix was "/chunk/" and ldb.rootKey was "/chun" instead of "/root"
    ldb := suite.factory.CreateStore("").(*LevelDBStore)
    suite.True(bytes.HasSuffix(ldb.rootKey, []byte(rootKeyConst)))
    suite.True(bytes.HasSuffix(ldb.chunkPrefix, []byte(chunkPrefixConst)))
}

开发者ID:willhite,项目名称:noms-old,代码行数:13,代码来源:leveldb_store_test.go

示例18: deleteOldAddrIndex

// deleteOldAddrIndex deletes the entire addrindex stored within the DB for a
// 2-byte addrIndexKeyPrefix. It also resets the cached in-memory metadata about
// the addr index.
func (db *LevelDb) deleteOldAddrIndex() error {
    db.dbLock.Lock()
    defer db.dbLock.Unlock()

    batch := db.lBatch()
    defer batch.Reset()

    // Delete the entire index along with any metadata about it.
    iter := db.lDb.NewIterator(bytesPrefix([]byte("a-")), db.ro)
    numInBatch := 0
    for iter.Next() {
        key := iter.Key()
        // With a 24-bit index key prefix, 1 in every 2^24 keys is a collision.
        // We check the length to make sure we only delete address index keys.
        // We also check the last two bytes to make sure the suffix doesn't
        // match other types of index that are 34 bytes long.
        if len(key) == 34 && !bytes.HasSuffix(key, recordSuffixTx) &&
            !bytes.HasSuffix(key, recordSuffixSpentTx) {
            batch.Delete(key)
            numInBatch++
        }

        // Delete in chunks to potentially avoid very large batches.
        if numInBatch >= batchDeleteThreshold {
            if err := db.lDb.Write(batch, db.wo); err != nil {
                iter.Release()
                return err
            }
            batch.Reset()
            numInBatch = 0
        }
    }
    iter.Release()
    if err := iter.Error(); err != nil {
        return err
    }

    batch.Delete(addrIndexMetaDataKey)
    batch.Delete(addrIndexVersionKey)

    if err := db.lDb.Write(batch, db.wo); err != nil {
        return err
    }

    db.lastAddrIndexBlkIdx = -1
    db.lastAddrIndexBlkSha = wire.ShaHash{}

    return nil
}

开发者ID:dan-da,项目名称:btcd,代码行数:52,代码来源:tx.go

示例19: readLine

// read one line from input and strip off terminating LF or terminating CR-LF
func (r *Reader) readLine() (line []byte, err error) {
    line, err = r.reader.ReadBytes(newline)
    if err != nil {
        return
    }

    switch {
    case bytes.HasSuffix(line, crlfSlice):
        line = line[0 : len(line)-len(crlfSlice)]
    case bytes.HasSuffix(line, newlineSlice):
        line = line[0 : len(line)-len(newlineSlice)]
    }

    return
}

开发者ID:semog,项目名称:stomp,代码行数:16,代码来源:reader.go

示例20: HandleLogfmt

func (dm *dynoLoadMsg) HandleLogfmt(key, val []byte) error {
    switch {
    case bytes.Equal(key, keySource):
        dm.Source = string(val)
    case bytes.Equal(key, keyDyno):
        dm.Dyno = string(val)
    case bytes.HasSuffix(key, keyLoadAvg1Min):
        dm.LoadAvg1Min, _ = strconv.ParseFloat(string(val), 64)
    case bytes.HasSuffix(key, keyLoadAvg5Min):
        dm.LoadAvg5Min, _ = strconv.ParseFloat(string(val), 64)
    case bytes.HasSuffix(key, keyLoadAvg15Min):
        dm.LoadAvg15Min, _ = strconv.ParseFloat(string(val), 64)
    }
    return nil
}

开发者ID:akkakks,项目名称:lumbermill,代码行数:15,代码来源:dyno_msg.go