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

Go 在字符串中附加一个字节?,go,Go,如何在Go中向字符串追加一个字节 var ret string var b byte ret += b invalid operation: ret += b (mismatched types string and byte) 以下是一些选项: // append byte as slice ret += string([]byte{b}) // append byte as rune ret += string(rune(b)) // convert string to byte s

如何在Go中向字符串追加一个字节

var ret string
var b byte
ret += b

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

以下是一些选项:

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

// append byte as rune
ret += string(rune(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)

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

除了ThunderCats answer。。您可以从字符串初始化
字节。缓冲区
。。。允许您继续添加您认为合适的字节:

buff := bytes.NewBufferString(ret)

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

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

// ...

result := buff.String()

这比其他答案简单得多:

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

// returns "testa"
也就是说,您可以将一个整数强制转换为字符串,它会将该整数视为符文(byte是整数类型)。然后您可以将结果字符串与
+


操场:

在戈朗的另一个解决方案

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)
    }
输出


您还可以使用
字符串.Builder

package main
import "strings"

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

package main
import "strings"

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