Sobes.tech
Middle

Mis on nil-liides?

sobes.tech AI

Vastus AI-lt

In Go, a nil interface is an interface value that contains neither a specific type nor a value. An interface in Go is represented by two parts: the type and the value. An interface is considered nil if both parts are nil.

It is important to understand that an interface can contain a nil pointer to a specific type, but the interface itself will not be nil, because the type is defined.

Example:

var i interface{} // i == nil

var p *int = nil
var i2 interface{} = p // i2 != nil, because the *int type is defined, even though the value is nil

fmt.Println(i == nil)  // true
fmt.Println(i2 == nil) // false

This often leads to errors when checking if an interface is nil, but it contains a nil pointer, and the condition does not hold.

Therefore, when working with interfaces, it is important to keep in mind that a nil interface is an interface without a type and value at the same time.