Czy jest możliwe przekonwertowanie string
na typ io.Writer
w Golang?Golang Konwertuj ciąg na io.Writer?
Będę używał tego ciągu w fmt.Fprintf()
, ale nie mogę przekonwertować tego typu.
Czy jest możliwe przekonwertowanie string
na typ io.Writer
w Golang?Golang Konwertuj ciąg na io.Writer?
Będę używał tego ciągu w fmt.Fprintf()
, ale nie mogę przekonwertować tego typu.
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?
Czy możesz podać przykład, jak mogę użyć zmiennej z typem ciągu znaków w funkcji fmt.Fprintf(), proszę. :) – Acidic
Dlaczego nie używać fmt.Sprintf()? – Uvelichitel