我最近在學(xué)習(xí)圍棋。這是關(guān)于 Go 指針的事情。這是代碼:var house = "Malibu Point 10880, 90265"ptr := &housefmt.Printf("ptr type: %T \n", ptr)fmt.Printf("address: %p \n", ptr)value := *ptrfmt.Printf("value type: %T \n", value)fmt.Printf("value: %S\n", value)fmt.Printf("value: %s\n", value)本教程被編碼為第 3 行,%s但%S它給出了這個奇怪的結(jié)果:ptr type: *stringaddress: 0xc000010200value type: stringvalue: %!S(string=Malibu Point 10880, 90265)value: Malibu Point 10880, 90265應(yīng)該是這個%s指針的字符串值,但是是什么%S意思呢?
1 回答

狐的傳說
TA貢獻(xiàn)1804條經(jīng)驗 獲得超3個贊
%S不是有效的 fmt 動詞。你得到的輸出相當(dāng)于%p. 沒什么特別的%S。這似乎發(fā)生在任何無法識別的動詞上。
fmt.Printf("value: %p\n", value)
fmt.Printf("value: %S\n", value)
fmt.Printf("value: %L\n", value)
fmt.Printf("value: %A\n", value)
value: %!p(string=Malibu Point 10880, 90265)
value: %!S(string=Malibu Point 10880, 90265)
value: %!L(string=Malibu Point 10880, 90265)
value: %!A(string=Malibu Point 10880, 90265)
當(dāng)您給出錯誤的 fmt 動詞時badVerb,會調(diào)用此行為。它記錄在docs的“格式錯誤”中。fmt
格式錯誤:
如果為動詞提供了無效參數(shù),例如向 %d 提供字符串,則生成的字符串將包含問題描述,如以下示例所示:
錯誤類型或未知動詞:%!verb(type=value)
- 1 回答
- 0 關(guān)注
- 243 瀏覽
添加回答
舉報
0/150
提交
取消