Если присвоить интерфейсу значение nil конкретного типа, сравнение с nil вернёт false, потому что у интерфейса уже есть динамический тип. Запомни правило: интерфейс равен nil только когда и тип отсутствует, и значение nil.
package main
import (
"fmt"
"os"
)
func main() {
var err error = (*os.PathError)(nil)
fmt.Println(err == nil)
}
https://www.youtube.com/shorts/vobogCxfoLk