package main
import "fmt"
const (
WHITE = iota
BLACK
BLUE
RED
YELLOW
)
type Color byte
func (c Color) String() string {
fmt.Println(c)
return "Ok"
}
func main() {
var c Color
c = WHITE
c.String()
}
上面的代码运行会死掉.
如果把method的String改成其它名字,例如Stringt则可以正常执行,或者去掉返回值,或者返回值类型改为其他类型就可以正常执行.
求指教~
更多评论
正解。
另外,标准库中有说明:
[fmt — 格式化IO](https://github.com/polaris1119/The-Golang-Standard-Library-by-Example/blob/master/chapter01/01.3.md):
为避免以下这类递归的情况:
type X string
func (x X) String() string { return Sprintf("<%s>", x) }
需要在递归前转换该值:
func (x X) String() string { return Sprintf("<%s>", string(x)) }
#2