Golang 中的 string 和 .String() 问题

我无法理解 Go 中的以下行为:


package main


import "fmt"


type Something string


func (a *Something) String() string {

  return "Bye"

}


func main() {

  a := Something("Hello")


  fmt.Printf("%s\n", a)

  fmt.Printf("%s\n", a.String())

}

将输出:


Hello

Bye

不知怎的,这感觉有点不一致。这是预期的行为吗?有人可以帮我吗?


互换的青春
浏览 410回答 2
2回答

月关宝盒

您String()是在指针上定义的,但您将值传递给Printf.要么将其更改为:func (Something) String() string {    return "Bye"}或使用fmt.Printf("%s\n", &a)

POPMUISE

参数类型不同。例如,package mainimport "fmt"type Something stringfunc (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 Hellostring Bye
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go