为了账号安全,请及时绑定邮箱和手机立即绑定

如何定义自定义类型到字符串的类型转换

如何定义自定义类型到字符串的类型转换

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 关注
  • 105 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信