如何在Go中将字节附加到字符串?
var ret string
var b byte
ret += b
invalid operation: ret += b (mismatched types string and byte)
答案 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"
也就是说,您可以将整数转换为字符串,它将整数视为符文(字节为整数类型)。然后,您可以将结果字符串与+
答案 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() == "!")
}