dongrui6787 2016-03-30 07:31
浏览 1899
已采纳

Golang将字符串转换为io.Writer?

Is it possible to convert a string to an io.Writer type in Golang?

I will be using this string in fmt.Fprintf() but I am unable to convert the type.

  • 写回答

2条回答 默认 最新

  • dongpu42006096 2016-03-30 07:33
    关注

    You can't write into a string, strings in Go are immutable.

    The best alternatives are the bytes.Buffer and since Go 1.10 the faster strings.Builder types: they implement io.Writer so you can write into them, and you can obtain their content as a string with Buffer.String() and Builder.String(), or as a byte slice with Buffer.Bytes().

    You can also have a string as the initial content of the buffer if you create the buffer with bytes.NewBufferString():

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

    Output (try it on the Go Playground):

    Hello, World!
    

    If you want to append a variable of type string (or any value of string type), you can simply use Buffer.WriteString() (or Builder.WriteString()):

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

    Or:

    fmt.Fprint(buf, s2)
    

    Also note that if you just want to concatenate 2 strings, you don't need to create a buffer and use fmt.Fprintf(), you can simply use the + operator to concatenate them:

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

    Also see: Golang: format a string without printing?

    It may also be of interest: What's the difference between ResponseWriter.Write and io.WriteString?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?