Как вы добавляете байт в строку в Go?Добавить байта в строку?
var ret string
var b byte
ret += b
invalid operation: ret += b (mismatched types string and byte)
Как вы добавляете байт в строку в Go?Добавить байта в строку?
var ret string
var b byte
ret += b
invalid operation: ret += b (mismatched types string and byte)
В дополнение к 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()
Вот несколько вариантов:
// 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))
Benchmark, чтобы увидеть, какой из них лучше.
Если вы хотите добавить более одного байта, а затем разбить второй вариант на несколько заявлений и добавлять в байт []:
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)
Строки неизменяемы. В приведенном выше коде создается новая строка, которая представляет собой конкатенацию исходной строки и байт или руны.
Это намного проще, чем любой из других ответов :
var ret string = "test"
var b byte = 'a'
ret += string(b)
// returns "testa"
то есть, вы можете просто бросить целое число в строку, и он будет рассматривать как целое число руна (байт является целочисленным типом). , То вы можете просто сцепить результирующую строку с +
Экспозиция: https://play.golang.org/p/ktnUg70M-I