I feel like the docs are pretty precise in what they say and why.
a blocked Lock call excludes new readers from acquiring the lock.
This means, the following could happen:
Goroutine 1 calls RLock, acquires a Read-Lock
Goroutine 2 calls Lock, blocking
Goroutine 1 calls RLock again, blocking (as no new read locks can be acquired while GR 2 is blocked).
Thus, you get a deadlock.
It also has a conditional on the section
If a goroutine holds a RWMutex for reading and another goroutine might call Lock […]
So if you know that no other goroutine might call Lock concurrently, then yes, you can call RLock twice. I can't really imagine a setting where you'd need an RWMutex and have that assurance and need recursive read locks. But there might be one.