2016-03-30 34 views

Odpowiedz

27

Nie można wpisywać do string, string s w Go są niezmienne.

Najlepszą alternatywą jest typem bytes.Buffer: implementuje io.Writer tak można napisać do niego, i można uzyskać jego zawartość jako string z Buffer.String() lub jako plaster bajtów z Buffer.Bytes().

Można też string jako początkową zawartość bufora jeśli utworzyć bufor z bytes.NewBufferString():

s := "Hello" 
buf := bytes.NewBufferString(s) 
fmt.Fprint(buf, ", World!") 
fmt.Println(buf.String()) 

Output (spróbuj na Go Playground):

Hello, World! 

Jeśli chcesz dołączyć zmienną typu string, możesz po prostu użyć Buffer.WriteString():

s2 := "to be appended" 
buf.WriteString(s2) 

Lub:

fmt.Fprint(buf, s2) 

Należy również pamiętać, że jeśli chcesz po prostu złączyć 2 string s, nie trzeba tworzyć bufor i używać fmt.Fprintf(), można po prostu użyć operatora + je złączyć:

s := "Hello" 
s2 := ", World!" 

s3 := s + s2 // "Hello, World!" 

zobacz także: Golang: format a string without printing?

+0

Czy możesz podać przykład, jak mogę użyć zmiennej z typem ciągu znaków w funkcji fmt.Fprintf(), proszę. :) – Acidic