可以先定义和接口, 然后man和human去实现这个接口

type Person struct {
    
} 

type P interface {
    p(a Person)
}

type Man struct {
    
}

func (m *Man) p(a Person)  {
    
}

type Human struct {

}

func (m *Human) p(a Person)  {

}

实现接口的这种方式, 当一个有一个函数参数是P时, 传的参可以是Man,也可以是Human, 通过实现同一个接口实现多态

func person(p P)  {
    
}

如果只是单纯的想要给struct添加方法, 下面就可以

type Man struct {

}

func (m *Man) p(a Person)  {

}

type Human struct {

}

func (m *Human) p(a Person)  {

}