2015-03-16 3 views

ответ

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() 
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)) 

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) 

Строки неизменяемы. В приведенном выше коде создается новая строка, которая представляет собой конкатенацию исходной строки и байт или руны.

0

Это намного проще, чем любой из других ответов :

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

// returns "testa" 

то есть, вы можете просто бросить целое число в строку, и он будет рассматривать как целое число руна (байт является целочисленным типом). , То вы можете просто сцепить результирующую строку с +

Экспозиция: https://play.golang.org/p/ktnUg70M-I

Смежные вопросы