Skip to content

Latest commit

 

History

History
16 lines (13 loc) · 568 Bytes

File metadata and controls

16 lines (13 loc) · 568 Bytes

Nil интерфейса: семантика сравнения

Проверка if out != nil может не сработать для типизированного nil, когда интерфейс содержит nil-указатель. Такой nil не равен nil, что может привести к неожиданному поведению.

func fn(out io.Writer) {
    if out != nil {
        out.Write([]byte("data"))  // Выполнится, хотя buf == nil
    }
}

func main() {
    var buf *bytes.Buffer
    fn(buf)
}