Print 和 Printf 在 Go 中有何不同?

  • 本文关键字:何不同 Go Printf Print go
  • 更新时间 :
  • 英文 :


我是Go的新手,了解简单的语法和函数。在这里,我在打印和打印功能之间感到困惑。这些函数的输出是相似的,那么这两个函数有什么区别呢?

package main
import (
"fmt"
"bufio"
"os"
)
func main(){
reader := bufio.NewReader(os.Stdin)
fmt.Print("Enter Text: ")
str, _ := reader.ReadString('n')
fmt.Printf(str)
fmt.Print(str)
}

我读 https://golang.org/pkg/fmt/#Print 来理解,但我不理解它。

来自有关打印的文档:

对于每个类似 Printf 的函数,还有一个 Print 函数,它不采用任何格式,相当于为每个操作数说 %v。另一个变体 Println 在操作数之间插入空格并附加换行符。

因此,Printf 采用格式字符串,让您告诉编译器使用哪种格式输出变量并将它们放入包含其他信息的字符串中,而 Print 只是按原样输出变量。一般来说,你更喜欢使用 fmt。Printf,除非您只是在调试并希望快速输出某些变量。

在您的示例中,您错误地将要打印的字符串作为格式字符串发送,这将起作用,但不是预期用途。如果您只想以默认格式打印一个变量,则可以使用 Print。

Printf 方法接受格式化字符串,因为此字符串中的"%s"和"%d"等代码指示值的插入点。然后将这些值作为参数传递。

例:

package main
import (
"fmt"      
)
var(
a = 654
b = false
c   = 2.651
d  = 4 + 1i
e   = "Australia"
f = 15.2 * 4525.321
)
func main(){    
fmt.Printf("d for Integer: %dn", a)
fmt.Printf("6d for Integer: %6dn", a)
fmt.Printf("t for Boolean: %tn", b)
fmt.Printf("g for Float: %gn", c)
fmt.Printf("e for Scientific Notation: %en", d)
fmt.Printf("E for Scientific Notation: %En", d)
fmt.Printf("s for String: %sn", e)
fmt.Printf("G for Complex: %Gn", f)
fmt.Printf("15s String: %15sn", e)
fmt.Printf("-10s String: %-10sn",e)
t:= fmt.Sprintf("Print from right: %[3]d %[2]d %[1]dn", 11, 22, 33)
fmt.Println(t)  
}

根据文档

打印

:将打印数字变量,并且末尾不包含换行符。

Printf:不会打印数字变量,并且不会在末尾包含换行符。

Printf用于打印格式化的字符串。它可以导致更具可读性的打印。

有关更多详细信息,请访问本教程。

Gofmt包提供的PrintPrintf函数都允许我们将字符串输出到终端。

为了回答您关于两者之间区别的问题,Printf允许您打印带有占位符的格式化字符串,用所需的值填充该字符串,而Print只打印用空格分隔的参数。

当可读性很重要时,您应该使用Printf,因为它可以让您更好地控制您提供的输出。否则,请使用Print

最新更新