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)
}
Run Code Online (Sandbox Code Playgroud)
为什么是这样的结果
{[0x176f44] 0x176f44} [栏] 栏
并不是
{[栏] 栏} [栏] 栏
背后有什么原因吗?它似乎很容易实现并且可读性良好。
您的代码中有几个问题。您定义未导出的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)
}
Run Code Online (Sandbox Code Playgroud)
游乐场:https://play.golang.org/p/OhoIcB7cA3。
这也适用于*Bar.