去字符串插值

Go string interpolation

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

package main

import "fmt"

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

func main() {
  fmt.Sprintln("inc 1 equal %v", inc(1))
}

如何插入 int 值?

fmt.Sprintln returns a String,但不打印任何内容。 (这个名字取自同样容易混淆的 C 函数 sprintf。)

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

fmt.Printf("inc 1 equal %v\n", inc(1))

fmt.Sprintln returns 展开的第一个参数。

Sprintln formats using the default formats for its operands and returns the resulting string. Spaces are always added between operands and a newline is appended.

Sprint格式化一个字符串和returns这样的字符串,它确实什么都不写。您要搜索的是 Print

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

所以,如果你想使用格式写入标准输出,你应该使用这个:

fmt.Printf("inc 1 equal %v", inc(1))