Go字符串插值

4urapxun  于 2022-12-07  发布在  Go
关注(0)|答案(4)|浏览(215)

尝试使用%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值?

rbpvctlc

rbpvctlc1#

fmt.Sprintln返回一个String,但不打印任何内容。(这个名称取自C函数sprintf,也是一个容易混淆的名称。)
您需要的是Printf,但您必须自己添加换行符:

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

2guxujil2#

Sprintln使用其操作数的默认格式进行格式化,并返回结果字符串。操作数之间总是添加空格,并追加一个换行符。
Sprint化一个字符串并返回这样的字符串,它不写入任何内容。您要搜索的是Print
此外,变量ln不解析%,它只在字符串的末尾添加换行符。
因此,如果要使用format写入标准输出,则应使用以下命令:

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

brgchamk3#

fmt.Sprintln* 返回 * 展开的第一个参数。

wi3ka0sx

wi3ka0sx4#

Go语言中有一个很酷的字符串插值包:
https://github.com/evandrojr/string-interpolation
简单的golang字符串插值。用一种简单的方法插值任何东西。
不再需要传递格式参数%d、%s、%t...!
它有3种方法:打印、Println和Sprint:
示例:

esi.Print("Print ", 10, " ", 7, " interpolates anything ", true, " ", 3.4e10)

输出量:

Print 10 7 interpolates anything true 3.4e+10

相关问题