在字符串中附加一个字节?

时间:2015-03-16 02:50:34

标签: go

如何在Go中将字节附加到字符串?

var ret string
var b byte
ret += b

invalid operation: ret += b (mismatched types string and byte)

5 个答案:

答案 0 :(得分:5)

除了ThunderCats的回答..你可以从一个字符串初始化一个bytes.Buffer ...允许你继续追加你认为合适的字节:

buff := bytes.NewBufferString(ret)

// maybe buff.Grow(n) .. if you hit perf issues?

buff.WriteByte(b)
buff.WriteByte(b)

// ...

result := buff.String()

答案 1 :(得分:4)

以下是几个选项:

// append byte slice
ret += string([]byte{b})

// convert string to byte slice, append byte to slice, convert back to string
ret = string(append([]byte(ret), b))

基准以确定哪一个最佳。

如果要附加多个字节,则将第二个选项分成多个语句并附加到[]字节:

buf := []byte(ret)    // convert string to byte slice
buf = append(buf, b)  // append byte to slice
buf = append(buf, b1) // append byte to slice
... etc
ret = string(buf)     // convert back to string

如果你想附加符文r,那就更简单了:

 ret += string(r)

字符串是不可变的。上面的代码创建了一个新字符串,它是原始字符串和字节或符文的串联。

答案 2 :(得分:1)

它比其他任何答案都简单得多:

var ret string = "test"
var b byte = 'a'
ret += string(b)

// returns "testa"

也就是说,您可以将整数转换为字符串,它将整数视为符文(字节为整数类型)。然后,您可以将结果字符串与+

连接起来

游乐场:https://play.golang.org/p/ktnUg70M-I

答案 3 :(得分:0)

Golang的另一种解决方案。

package main

    import (
    
        "fmt"
    )
    
    func main() {
        byteArr := []byte{1,2,5,4}
        stringStr := "Test"
        output:= fmt.Sprintf("%v %v",byteArr,stringStr)
        fmt.Println("Output: ",output)
    }

输出

Output:  [1 2 5 4] Test

答案 4 :(得分:0)

您也可以使用strings.Builder

package main
import "strings"

func main() {
   var b strings.Builder
   b.WriteByte('!')
   println(b.String() == "!")
}

https://golang.org/pkg/strings#Builder.WriteByte