Можно ли преобразовать a string в тип io.Writer в Golang?
Я буду использовать эту строку в fmt.Fprintf(), но я не могу преобразовать тип.
Можно ли преобразовать a string в тип io.Writer в Golang?
Я буду использовать эту строку в fmt.Fprintf(), но я не могу преобразовать тип.
Вы не можете писать в string, string в Go неизменны.
Лучшими альтернативами являются bytes.Buffer, и, поскольку Go 1.10, более быстрые типы strings.Builder: они реализуют io.Writer, поэтому вы можете писать в них, и вы можете получить их содержимое в виде string с помощью Buffer.String() и Builder.String() или в виде фрагмента байтов с помощью Buffer.Bytes().
Вы также можете иметь string в качестве начального содержимого буфера, если создаете буфер с помощью bytes.NewBufferString():
s := "Hello"
buf := bytes.NewBufferString(s)
fmt.Fprint(buf, ", World!")
fmt.Println(buf.String())
Вывод (попробуйте на Go Playground):
Hello, World!
Если вы хотите добавить переменную типа string (или любое значение типа string), вы можете просто использовать Buffer.WriteString() (или Builder.WriteString()):
s2 := "to be appended"
buf.WriteString(s2)
Или:
fmt.Fprint(buf, s2)
Также обратите внимание, что если вы просто хотите объединить 2 string с, вам не нужно создавать буфер и использовать fmt.Fprintf(), вы можете просто использовать оператор + для объединения им:
s := "Hello"
s2 := ", World!"
s3 := s + s2 // "Hello, World!"
Также см.: Golang: форматировать строку без печати?
Это также может представлять интерес: В чем разница между ResponseWriter.Write и io.WriteString?
Используйте bytes.Buffer, который реализует метод Write().
import "bytes"
writer := bytes.NewBufferString("your string")