nil-получатель метода в Go

Раз уж мы заговорили о пустых значениях — вы же в курсе, что метод можно вызвать даже на пустом указателе?

type english struct {
    name string
}

// e может быть nil!
func (e *english) greet() {
    if e == nil {
        fmt.Println("I'm nil")
        return
    }
    fmt.Println("Hello", e.name)
}

Прям вот так взять и вызвать:

var e *english
e.greet()
// I'm nil

И если убрать проверку на nil из метода — будет паника на обращении к e.name 🤷‍♀️

★ Подписывайтесь на новые заметки.