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

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

如何定義自定義類型到字符串的類型轉換

如何定義自定義類型到字符串的類型轉換

Go
嚕嚕噠 2023-08-07 11:16:54
我可以定義如何將 using 轉換為字符串String()應用于我的自定義類型嗎myint?以及如何做到這一點?我期望定義該方法String()就足夠了,因為它被使用,fmt.Println()但顯然不是string()。這純粹是一個理論問題,因為我正在學習 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貢獻1811條經驗 獲得超5個贊

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

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

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

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

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

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

Testing:?42?42


查看完整回答
反對 回復 2023-08-07
  • 1 回答
  • 0 關注
  • 153 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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