doutuo3575 2019-07-03 06:30
浏览 805

使fmt.sprintf不替换变量中的%s

If I wanted to do the following:

    a := "%shello%s"
    b:= fmt.Sprintf("%sWorld",a)
    fmt.Printf(b)

I want to print

 %shello%sWorld

ie %s is replaced only in %sWorld.

How can i do that?

I do not want to replace a with %%shello%%s

  • 写回答

1条回答 默认 最新

  • duanfei7508 2019-07-03 06:43
    关注
    a := "%shello%s"
    b:= fmt.Sprintf("%sWorld",a)
    

    This works just fine, it results in a string being "%shello%sWorld".

    The problem is with how you print it:

    fmt.Printf(b)
    

    fmt.Printf() treats b as a format string, and since b's value contains %s, this expects you to also pass arguments (which you haven't), so the actual output contains error messages.

    Instead print it with fmt.Println():

    fmt.Println(b)
    

    And output will be (try it on the Go Playground):

    %shello%sWorld
    
    评论

报告相同问题?

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?