考慮,package mainimport "fmt"func main() { name := "johnny" fmt.Println("Hello world %s\n", name)}打印出來,你好世界%s 約翰尼為什么我得到 %s 而不是這個(gè),package mainimport "fmt"func main() { name := "johnny" fmt.Printf("Hello world %s\n", name)}哪個(gè)打印 Hello world johnny?我試圖從文檔中找出答案,如果格式(對(duì)于 Println 等隱式為 %v)對(duì)字符串有效(%s %q %v %x %X),則以下兩條規(guī)則適用:如果操作數(shù)實(shí)現(xiàn)了錯(cuò)誤接口,則將調(diào)用 Error 方法將對(duì)象轉(zhuǎn)換為字符串,然后根據(jù)動(dòng)詞(如果有)的要求對(duì)其進(jìn)行格式化。如果操作數(shù)實(shí)現(xiàn)方法 String() string,則將調(diào)用該方法將對(duì)象轉(zhuǎn)換為字符串,然后將根據(jù)動(dòng)詞(如果有)的要求對(duì)其進(jìn)行格式化。但是我無法理解這是否影響了我的程序。
2 回答

慕哥6287543
TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超10個(gè)贊
在f
中Printf
是“格式化”。這就是%?
動(dòng)詞可以做任何事情的原因,因?yàn)楹瘮?shù)是為解析它們而構(gòu)建的。Println
沒有這種格式。
格式不像某些語言那樣是字符串的屬性(也許你和我一樣,來自 Python?)

qq_花開花謝_0
TA貢獻(xiàn)1835條經(jīng)驗(yàn) 獲得超7個(gè)贊
Println
只打印字符串并向其附加換行符。Printf
是“打印格式”的縮寫,基于 C 庫,這是格式說明符等約定的來源。
簡單的答案是它的設(shè)計(jì)。如果你想使用格式說明符,你必須調(diào)用 format 方法。
- 2 回答
- 0 關(guān)注
- 215 瀏覽
添加回答
舉報(bào)
0/150
提交
取消