3 回答

TA貢獻1845條經驗 獲得超8個贊
以nemo的答案為基礎:
println是語言內置的功能。它在規范的Bootstrapping部分中。從鏈接:
當前的實現提供了一些自舉過程中有用的內置函數。這些功能已記錄完整,但不能保證始終保留該語言。他們不返回結果。
Function Behavior
print prints all arguments; formatting of arguments is implementation-specific
println like print but prints spaces between arguments and a newline at the end
因此,它們對開發人員很有用,因為它們缺少依賴項(已內置到編譯器中),但在生產代碼中卻沒有。同樣重要的是要注意print并向println 而stderr不是向stdout。
fmt但是,由提供的系列是在生產代碼中構建的。stdout除非另有說明,否則它們會向預測地報告。他們更靈活(fmt.Fprint*可向任何報告io.Writer,例如os.Stdout,os.Stderr或者甚至是一個net.Conn類型。),并沒有實現特定的。
大多數負責輸出的包都具有fmt依賴項,例如log. 如果您的程序要在生產中輸出任何內容,fmt則很可能是您想要的軟件包。

TA貢獻2016條經驗 獲得超9個贊
我可以在這里看到區別:
rangeOverIntsAndStrings(1, 5)
func rangeOverIntsAndStrings(args ...interface{}) {
for _, v := range args {
println(v)
}
}
// 輸出
(0x108f060,0x10c5358)
(0x108f060,0x10c5360)
對比
func rangeOverIntsAndStrings(args ...interface{}) {
for _, v := range args {
fmt.Println(v)
}
}
// 輸出
1
5
- 3 回答
- 0 關注
- 382 瀏覽
添加回答
舉報