package main
import (
"fmt"
)
type bar struct {
}
func (b bar) String() string {
return "bar"
}
type foo struct {
b []*bar
bb *bar
}
func main() {
f := foo{b: []*bar{&bar{}}, bb:&bar{}}
fmt.Println(f, f.b, f.bb)
}
为什么结果是
{[0x176f44] 0x176f44} [bar] bar
而不是
{[酒吧] 酒吧} [酒吧] 酒吧
这背后有什么原因吗?它似乎易于实现并且具有良好的可读性。
你的代码中有几个问题。您可以在未导出的字段上定义String
bar
,您的字段也是未导出的。这有效:
type Bar struct {
}
func (b Bar) String() string {
return "bar"
}
type foo struct {
B []Bar
BB Bar
}
func main() {
f := foo{B: []Bar{Bar{}}, BB: Bar{}}
fmt.Println(f)
}
游乐场:https://play.golang.org/p/OhoIcB7cA3。
这也适用于*Bar
.