2015-03-16 1 views

Odpowiedz

5

Oprócz ThunderCats odpowiedzieć .. można zainicjować bytes.Buffer z ciągiem ... pozwala kontynuować dołączanie bajtów jak uważasz:

buff := bytes.NewBufferString(ret) 

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

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

// ... 

result := buff.String() 
4

Oto kilka opcji:

// 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, aby zobaczyć, który z nich jest najlepszy.

Jeśli chcesz dołączyć więcej niż jeden bajt, a następnie złamać drugą opcję w wielu sprawozdaniach i dołączyć do [] bajt:

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 

Jeśli chcesz dołączyć runę r, to jest trochę prostsze:

ret += string(r) 

Struny są niezmienne. Powyższy kod tworzy nowy ciąg, który jest połączeniem oryginalnego ciągu znaków i bajtu lub runy.

0

To dużo prostsze niż którykolwiek z pozostałych odpowiedzi :

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

// returns "testa" 

oznacza to, że można po prostu rzucać liczbę całkowitą na łańcuch i będzie traktować całkowitą jako runy (bajt jest typu integer). Następnie można po prostu złączyć wynikowy ciąg z +

Playground: https://play.golang.org/p/ktnUg70M-I