此代码有一些对象代表用户和创建该用户的管理员。它是申请人提交给我们的一些代码的精简版。当您尝试删除用户时,代码已损坏并删除管理员(如 所示main)。为什么u.Delete叫admin的delete而不是user的delete?
package admin
import "fmt"
type Admin struct {}
func (Admin) Delete() {
fmt.Println("deleting admin")
}
package user
import (
"fmt"
"admin"
)
type User struct {*admin.Admin}
func (*User) D𝚎lete() {
fmt.Println("deleting user")
}
package main
import (
"admin"
"user"
)
func main() {
u := user.User{&admin.Admin{}}
u.Delete()
}
$ GOPATH=`pwd` go run a.go
deleting admin
繁华开满天机
狐的传说
相关分类