亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Go中的fmt.Println()和println()之間的區別

Go中的fmt.Println()和println()之間的區別

Go
冉冉說 2021-05-02 12:23:28
如下圖所示,無論是fmt.Println()和println()給圍棋相同的輸出:Hello world!但是:它們彼此之間有何不同?片段1,使用fmt包裝;package mainimport (    "fmt")func main() {    fmt.Println("Hello world!")}片段2,不帶fmt包裝;package mainfunc main() {    println("Hello world!")}
查看完整描述

3 回答

?
蕭十郎

TA貢獻1815條經驗 獲得超13個贊

println是一個內置函數(在運行時中),當fmt程序包位于標準庫中時,該函數可能會最終刪除,該函數將繼續存在。請參閱有關該主題的規范。

對于語言開發人員來說,println沒有依賴是很方便的,但是方法是使用fmt軟件包或類似的東西(log例如)。

如您在實現中看到的,這些print(ln)功能并非旨在遠程支持其他輸出模式,而主要是調試工具。


查看完整回答
反對 回復 2021-05-31
?
精慕HU

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則很可能是您想要的軟件包。


查看完整回答
反對 回復 2021-05-31
?
慕沐林林

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


查看完整回答
反對 回復 2021-05-31
  • 3 回答
  • 0 關注
  • 382 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號