Golang中fmt.Print和fmt.Println的用法与区别

Golang中fmt.Print和fmt.Println的用法与区别 大家好…

这是我在这个非常有用的论坛上的第一篇帖子,我会尽量表达清楚:)

我的问题是:我不明白为什么在这段代码中 Println 会生成两个额外的空白字节 >

https://play.golang.org/p/PfvEE_TB_Ng

真的感到很困惑,也不知道该如何搜索答案,所以任何指导都会很有帮助!

谢谢大家!

4 回复

感谢 @Zyl1 提供的简单示例。

更多关于Golang中fmt.Print和fmt.Println的用法与区别的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


因为这两个函数都按照文档说明工作。println 总是添加空格,而 print 仅当两个相邻参数中至少有一个不是字符串时才添加空格。

Println 使用空格连接参数,而 Print 则不会(不过,并非总是如此)。你不需要如此冗长的示例就能看出区别:https://play.golang.org/p/nyLYT5wj8Da

func main() {
    fmt.Println("hello world")
}

在Go语言中,fmt.Printfmt.Println的主要区别在于输出格式的处理,特别是对空格和换行的处理方式。根据你提供的代码链接(虽然我无法直接访问,但基于常见问题分析),你遇到的多余空白字节问题通常与Println自动添加的空格和换行有关。

核心区别:

  • fmt.Print:输出参数内容,不添加任何额外字符。多个参数连续输出,中间没有自动空格。
  • fmt.Println:输出参数内容,在每个参数之间添加一个空格,并在最后自动添加换行符(\n)。

示例代码演示:

让我们通过一个简单示例来展示两者的区别:

package main

import "fmt"

func main() {
    a, b := "Hello", "World"
    
    fmt.Print("使用Print: ")
    fmt.Print(a, b)
    fmt.Print("|结束\n")
    
    fmt.Println("使用Println: ", a, b, "|结束")
}

输出结果:

使用Print: HelloWorld|结束
使用Println:  Hello World |结束

问题分析:

在你的代码中,如果使用了Println,它会在每个参数之间插入空格,并在末尾添加换行。这可能导致出现你观察到的"两个额外的空白字节":

  • 一个空格出现在参数之间
  • 一个换行符(\n)出现在末尾

例如:

fmt.Println("A", "B") // 输出 "A B\n"(显示为A B后换行)

而使用Print时:

fmt.Print("A", "B") // 输出 "AB"(紧密连接,不换行)

解决方案:

如果你不想要这些额外的空格和换行,可以使用:

  • fmt.Print 替代 fmt.Println
  • 或者使用 fmt.Printf 进行格式化输出
// 紧密连接多个值
fmt.Print("Hello", "World", "\n")

// 或者使用Printf精确控制格式
fmt.Printf("%s%s\n", "Hello", "World")

这种设计让Println在调试和快速输出时更加方便,而PrintPrintf则提供更精确的输出控制。

回到顶部