Golang 的 fmt.printf()在单元测试中的一次异常

263 天前
 Test22

本人 golang 版本是 1.19.2 ,在公司中用的是 1.20 。 我知道是因为 format 时少了一个参数,我好奇的是为什么在执行 test 时编译不通过,而执行 main 的时候是可运行的。 不说废话,上代码,各位大哥看看是什么原因。

main.go

package main

import (
	"fmt"
)

func main() {
	printLine()
}

func printLine() {
	fmt.Printf("without arguments line", "arg
ument")
}
//输出 without arguments line%!(EXTRA string=argument)

main_test.go

package main

import "teig"

func Test_printLine(t *testing.T) {
	printLine()
}
//报错.\main.go:12:12: fmt.Printf call has arguments but no formatting directives
575 次点击
所在节点    问与答
2 条回复
standchan
262 天前
我试了一下,可能是 1.20 版本单元测试要求 fmt.Printf 需要加上格式占位符%s ,%d 之类的才能编译通过,你都用了 Printf 了。那就把%s,%d 之类的加上吧
Test22
254 天前
@standchan 主要是我写了单元测试,但是项目中有不存在占位符的代码,而且还蛮多了,我也不好一行一行注释过去,所以才来问问😭

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/969016

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX