package data
...
var (
AnonymousUser = &User{} //声明一个匿名用户变量
)
type User struct {
ID int64 `json:"id"`
CreateAt time.Time `json:"create_at"`
Name string `json:"name"`
Email string `json:"email"`
Password password `json:"-"`
Activated bool `json:"activated"`
Version int `json:"-"`
}
//检查用户是否为匿名用户
func (u *User)IsAnonymous() bool {
return u == AnonymousUser
}
这里我们创建一个新的 AnonymousUser 变量,存放指向一个 User 结构体指针表示用户没有 ID 、name 、email 或 password 且未激活。我们还为 User 结构体实现了一个 IsAnonymous()方法,因此只要是 User 实例就可以判断是否为 AnonymousUser 实例,例如:
data.AnonymousUser.IsAnonymous() // → 返回 true
otherUser := &data.User{}
otherUser.IsAnonymous() // → 返回 false
第一个判断是 true 我能理解, 为什么第二个就是 false 呢。