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

Golang 中的 string 和 .String() 问题

Golang 中的 string 和 .String() 问题

Go
互换的青春 2021-08-23 15:34:56
我无法理解 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)


查看完整回答
反对 回复 2021-08-23
?
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


查看完整回答
反对 回复 2021-08-23
  • 2 回答
  • 0 关注
  • 406 浏览
慕课专栏
更多

添加回答

举报

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