为了账号安全,请及时绑定邮箱和手机立即绑定

Go 中的 Print 和 Printf 有何不同?

Go 中的 Print 和 Printf 有何不同?

Go
交互式爱情 2023-04-04 14:36:42
我是 Go 的新手,理解简单的语法和函数。在这里,我对 Print 和 Printf 函数感到困惑。这些函数的输出是相似的,那么这两个函数有什么区别呢?package mainimport (    "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就明白了,没看懂。
查看完整描述

3 回答

?
波斯汪

TA贡献1811条经验 获得超4个赞

从有关 Printing 的文档中:

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

所以 Printf 采用格式字符串,让您告诉编译器输出变量的格式,并将它们与其他信息一起放入字符串中,而 Print 只是按原样输出变量。通常您更喜欢使用 fmt.Printf,除非您只是在调试并希望快速输出一些变量。

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


查看完整回答
反对 回复 2023-04-04
?
萧十郎

TA贡献1815条经验 获得超12个赞

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: %d\n", a)

fmt.Printf("6d for Integer: %6d\n", a)


fmt.Printf("t for Boolean: %t\n", b)

fmt.Printf("g for Float: %g\n", c)

fmt.Printf("e for Scientific Notation: %e\n", d)

fmt.Printf("E for Scientific Notation: %E\n", d)

fmt.Printf("s for String: %s\n", e)

fmt.Printf("G for Complex: %G\n", f)


fmt.Printf("15s String: %15s\n", e)

fmt.Printf("-10s String: %-10s\n",e)


t:= fmt.Sprintf("Print from right: %[3]d %[2]d %[1]d\n", 11, 22, 33)

fmt.Println(t)  

}


查看完整回答
反对 回复 2023-04-04
?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

根据文档

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

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

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


查看完整回答
反对 回复 2023-04-04
  • 3 回答
  • 0 关注
  • 220 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信