V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Test22
V2EX  ›  问与答

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

  •  
  •   Test22 · 245 天前 · 559 次点击
    这是一个创建于 245 天前的主题,其中的信息可能已经有所发展或是发生改变。

    本人 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
    
    2 条回复    2023-09-06 17:54:36 +08:00
    standchan
        1
    standchan  
       245 天前
    我试了一下,可能是 1.20 版本单元测试要求 fmt.Printf 需要加上格式占位符%s ,%d 之类的才能编译通过,你都用了 Printf 了。那就把%s,%d 之类的加上吧
    Test22
        2
    Test22  
    OP
       237 天前
    @standchan 主要是我写了单元测试,但是项目中有不存在占位符的代码,而且还蛮多了,我也不好一行一行注释过去,所以才来问问😭
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2629 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 14:30 · PVG 22:30 · LAX 07:30 · JFK 10:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.