go的锁是否是可重入的

type Reentrant struct {
	sync.Mutex

}

func (receiver *Reentrant) methodA()  {
	receiver.Lock()
	fmt.Println("method A is running")
	receiver.methodB()

	receiver.Unlock()
}

func (receiver Reentrant) methodB()  {
	receiver.Lock()
	fmt.Println("method B is running")
	receiver.Unlock()
}

func TestReentrant(t *testing.T) {
	a := new(Reentrant)
	a.methodA()
}