Go字符串插值

24

尝试使用%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 类型的插值?

3个回答

39
fmt.Sprintln返回一个String,但不会打印任何内容(名称取自于同样容易混淆的C函数sprintf)。
你需要使用Printf,但你需要自己添加换行符:
fmt.Printf("inc 1 equal %v\n", inc(1))

7
Sprintln使用其操作数的默认格式进行格式化,并返回结果字符串。在操作数之间始终添加空格,并附加换行符。
Sprint格式化字符串并返回该字符串,它不会输出任何内容。你要寻找的是Print。
此外,变体ln不解析%,它只在字符串末尾添加换行符。
因此,如果想使用格式写入标准输出,应使用以下内容:
fmt.Printf("inc 1 equal %v", inc(1))

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接