deferでのrecoverのよくわからない挙動がよくわからない

deferで呼び出した関数でrecoverした場合にはpanicは発生しない。

https://play.golang.org/p/Z0oJ2I26wq8

package main

import "fmt"

func main() {
    defer recoverFunc()
    panic("Panic happens!")
}

func recoverFunc() {
    if err := recover(); err != nil {
        fmt.Printf("Recover: %v¥n", err)
    }
}

しかし、deferで呼び出した関数からさらに呼び出した関数でrecoverした場合にはpanicが発生する(recoverが働かない)。

https://play.golang.org/p/FTqz736dHD9

package main

import "fmt"

func main() {
    defer deferredFunc()
    panic("Panic happens!")
}

func deferredFunc() {
    recoverFunc()
}

func recoverFunc() {
    if err := recover(); err != nil {
        fmt.Printf("Recover: %v¥n", err)
    }
}

直感的に後者の場合でもpanicが発生しないかと思ったんだけどな。