Go 在字符串中附加一个字节?
如何在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
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() == "!")
}