第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

如何定義自定義類型到字符串的類型轉(zhuǎn)換

如何定義自定義類型到字符串的類型轉(zhuǎn)換

Go
嚕嚕噠 2023-08-07 11:16:54
我可以定義如何將 using 轉(zhuǎn)換為字符串String()應(yīng)用于我的自定義類型嗎myint?以及如何做到這一點?我期望定義該方法String()就足夠了,因為它被使用,fmt.Println()但顯然不是string()。這純粹是一個理論問題,因為我正在學(xué)習(xí) Go,并對這種行為感到驚訝。下面是一個顯示該行為的示例:package mainimport (    "fmt")type myint intfunc (m myint) String() string {    return fmt.Sprintf("%d", m)}func main() {    var val myint = 42    mystr := "Testing: " + string(val)    fmt.Println(mystr, val)}哪個輸出:測試:* 42但我期待的是:測試:42 42
查看完整描述

1 回答

?
四季花海

TA貢獻(xiàn)1811條經(jīng)驗 獲得超5個贊

我可以定義如何將 using 轉(zhuǎn)換為字符串string()應(yīng)用于我的自定義類型嗎myint?以及如何做到這一點?

不,您不能“覆蓋”轉(zhuǎn)化行為。它被記錄在Spec: Conversions中,這就是它的結(jié)束。該String()方法適用于fmt包,因為fmt編寫包是為了顯式檢查該String() string方法是否存在。轉(zhuǎn)換不會這樣做。

如果您需要自定義轉(zhuǎn)換行為,請不要使用轉(zhuǎn)換,而是在方法(或函數(shù))中實現(xiàn)邏輯,并調(diào)用這些方法(或函數(shù))。

所以在你的例子中你會寫:

mystr?:=?"Testing:?"?+?val.String()

您將得到預(yù)期的輸出(在Go Playground上嘗試):

Testing:?42?42


查看完整回答
反對 回復(fù) 2023-08-07
  • 1 回答
  • 0 關(guān)注
  • 159 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號