Go语言:为什么使用 fmt.Println() 编译后比 println() 的体积大

前言:


  • 最近我看到 很多代码 都喜欢使用 fmt.Println() 来进行输出
  • 但是 Go 内置的一个 println() 却没什么人使用

作用:


  • println():用于 输出基础类型 的函数,因为是 内置 函数,所以不需要 导包
  • fmt.Println():用于 输出 基础类型 和 复合类型 的函数,隶属于 fmt

简单例子对比:


- 编译:

go build -ldflags="-w -s"

- println() 的例子:

    println(`Hellow World`)

编译后:760 KB

- fmt.Println() 例子:

    fmt.Println(`Hellow World`)

编译后:1,461 KB


  • 上述 简单例子对比 可以看出,fmt.Println() 编译后 可执行文件 的 体积大小println()2倍
  • 这是什么原因导致的?
  • 我通过 VS Code 打开了 fmt 库的 源码
  • 发现了 fmt 库中 还引入了其他的库
  • 导致了编译后体积增大了不少

总结:


  • 在项目中如果不是遇到 复合类型的输出
  • 尽可能不要使用 fmt.Println()
  • 使用 fmt.Println()影响一定的性能
  • 输出 数组 尽可能使用 for range + println()
  • 明确结构的 结构体 可以使用 println(结构体.字段1, 结构体.字段2, 结构体.字段3) 进行输出

你可能感兴趣的:(Go语言:为什么使用 fmt.Println() 编译后比 println() 的体积大)