结构用户包含结构父指针结构oneUsers是结构用户片结构twoUsers是结构oneUsers片
两个用户-〉一个用户-〉用户-〉父用户
我尝试打印没有任何指针值的twoUsers
package main
import "fmt"
type parent struct {
id int
}
type user struct {
id int
name string
email string
parent *parent
}
func (u *user) String() string {
if u == nil {
return "nil"
}
return fmt.Sprintf("%#v", *u)
}
func (p *parent) String() string {
if p == nil {
return "nil"
}
return fmt.Sprintf("%#v", *p)
}
func (o *oneUsers) String() string {
if o == nil {
return "nil"
}
return fmt.Sprintf("%#v", *o)
}
type oneUsers []*user
type twoUsers []*oneUsers
func main() {
var oneUser oneUsers
p := parent{id: 6}
oneUser = append(oneUser, &user{id: 1, name: "cooluser1", email: "cool.user1@gmail.com", parent: &p})
oneUser = append(oneUser, &user{id: 2, name: "cooluser2", email: "cool.user2@gmail.com"})
fmt.Printf("oneUser: %+v\n", oneUser)
var twoUser twoUsers
twoUser = append(twoUser, &oneUser)
fmt.Printf("twoUser: %v\n", twoUser)
}
我试着在所有的结构体指针中添加String()函数,但是也打印指针值。
oneUser: [main.user{id:1, name:"cooluser1", email:"cool.user1@gmail.com", parent:(*main.parent)(0xc00001a120)} main.user{id:2, name:"cooluser2", email:"cool.user2@gmail.com", parent:(*main.parent)(nil)}]
twoUser: [main.oneUsers{(*main.user)(0xc000108150), (*main.user)(0xc000108180)}]
1条答案
按热度按时间hfsqlsce1#
twoUser
指向一个oneUser
指针数组,所以当你想打印twoUser
时,它只打印一些指针,如果你想打印twoUser
中的oneUser
值,把func (o *oneUsers) String() string
方法修改成如下形式:输出: