去字符串插值

elm*_*elm 6 go string-interpolation

尝试int使用%v格式化程序将值插入到字符串中,如下所示,但没有打印任何内容,

package main

import "fmt"

func inc(i int) int {
  return i + 1
}

func main() {
  fmt.Sprintln("inc 1 equal %v", inc(1))
}
Run Code Online (Sandbox Code Playgroud)

如何插入一个int值?

Tho*_*mas 18

fmt.Sprintln返回 a String,但不打印任何内容。(该名称取自同样容易混淆的 C 函数sprintf。)

您需要的是Printf,但您必须自己添加换行符:

fmt.Printf("inc 1 equal %v\n", inc(1))
Run Code Online (Sandbox Code Playgroud)

  • 还记得“打印”意味着把东西放在纸上的日子吗?我也不。但是将它放入某个内存位置绝对不像打印给我而不是将它写入终端(这通常是 stdout 所连接的)。 (7认同)
  • 我不认为 `Sprintf` 有一个令人困惑的名字。它打印成一个字符串:) (4认同)

Iva*_*dad 7

Sprintln 使用其操作数的默认格式进行格式化并返回结果字符串。操作数之间始终添加空格并附加换行符。

Sprint格式化一个字符串并返回这样一个字符串,它什么也不写。您正在寻找的是Print

此外,该变体ln不解析%,它仅在字符串末尾添加换行符。

因此,如果您想使用格式写入标准输出,您应该使用:

fmt.Printf("inc 1 equal %v", inc(1))
Run Code Online (Sandbox Code Playgroud)