2015-03-16 15 views

Antwort

5

Neben ThunderCats beantworten .. Sie eine bytes.Buffer aus einem String initialisieren könnte ... so dass Sie Anfügen Bytes fortzusetzen, wie Sie sehen, passen:

buff := bytes.NewBufferString(ret) 

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

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

// ... 

result := buff.String() 
4

Hier sind ein paar Optionen:

// 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 zu sehen, die man am besten ist.

Wenn Sie mehr als ein Byte angehängt werden soll, dann brechen die zweite Option in mehrere Anweisungen und hängen an den [] Byte:

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 

Wenn Sie die Rune r angehängt werden soll, dann ist es ein wenig einfacher:

ret += string(r) 

Zeichenketten sind unveränderlich. Der obige Code erstellt eine neue Zeichenfolge, die eine Verkettung der ursprünglichen Zeichenfolge und eines Byte oder Rune ist.

0

Es ist viel einfacher, als eine der beiden anderen Antworten :

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

// returns "testa" 

das heißt, können Sie einfach eine ganze Zahl in eine Zeichenfolge und es wird die ganze Zahl als Rune (Byte ist ein integer-Typ) zu behandeln. Ein dann können Sie nur den resultierenden String verketten mit +

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

Verwandte Themen