我可以定義如何將 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()
Testing:?42?42
- 1 回答
- 0 關注
- 153 瀏覽
添加回答
舉報
0/150
提交
取消