W jaki sposób dodajesz bajt do łańcucha w Go?Dołącz bajt do łańcucha?
var ret string
var b byte
ret += b
invalid operation: ret += b (mismatched types string and byte)
W jaki sposób dodajesz bajt do łańcucha w Go?Dołącz bajt do łańcucha?
var ret string
var b byte
ret += b
invalid operation: ret += b (mismatched types string and byte)
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()
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.
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