我可以定义如何将 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 关注
- 105 浏览
添加回答
举报
0/150
提交
取消