我无法理解 Go 中的以下行为:package mainimport "fmt"type Something stringfunc (a *Something) String() string { return "Bye"}func main() { a := Something("Hello") fmt.Printf("%s\n", a) fmt.Printf("%s\n", a.String())}将输出:HelloBye不知怎的,这感觉有点不一致。这是预期的行为吗?有人可以帮我吗?
2 回答
月关宝盒
TA贡献1772条经验 获得超5个赞
您String()是在指针上定义的,但您将值传递给Printf.
要么将其更改为:
func (Something) String() string {
return "Bye"
}
或使用
fmt.Printf("%s\n", &a)
POPMUISE
TA贡献1765条经验 获得超5个赞
参数类型不同。例如,
package main
import "fmt"
type Something string
func (a *Something) String() string {
return "Bye"
}
func main() {
a := Something("Hello")
fmt.Printf("%T %s\n", a, a)
fmt.Printf("%T %s\n", a.String(), a.String())
}
输出:
main.Something Hello
string Bye
- 2 回答
- 0 关注
- 406 浏览
添加回答
举报
0/150
提交
取消