【发布时间】:2020-03-17 06:53:23
【问题描述】:
我能否定义如何使用String() 将转换为字符串应用于我的自定义类型myint?以及如何做到这一点?
我期望定义方法 String() 就足够了,因为它被 fmt.Println() 使用,但显然不是 string()。这纯粹是一个理论问题,因为我正在学习 Go,并且对这种行为感到惊讶。
这是一个显示行为的示例:
package main
import (
"fmt"
)
type myint int
func (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
【问题讨论】:
-
“我期待 [...]”。语言规范或围棋之旅的哪一部分让您期待这一点?
-
@Volker 这是一种直觉,因为我认为
string()会使用与fmt.Println()相同的机制,这次巡演让我认为纵梁比实际情况更重要...... Python 也有这种行为。 -
构造
string(x)不是函数调用而是类型转换,因为string不是函数而是类型。
标签: string go type-conversion