This page is not yet available in Spanish. We are working on its translation.
If you have any questions or feedback about our current translation project, feel free to reach out to us!

Metadata

ID: go-best-practices/comparing-address-nil

Language: Go

Severity: Info

Category: Best Practices

Description

The code if &x == nil is not recommended in Go and should be avoided.

Here are a few reasons why:

  1. Incorrect Comparison: In Go, comparing the address of a variable &x directly to nil using == is not a valid or meaningful comparison. The address of a variable is a memory location and cannot be directly compared to nil to check for its value.
  2. Pointer Check: Comparing the address of a variable to nil using == does not accurately check if the variable itself is nil. It only checks if the address is null, not the value stored at that address.
  3. Incorrect Usage of nil: In Go, nil is typically used to check if a pointer or reference type is uninitialized or doesn’t point to a valid object. It is not meant to be used to compare the address of a variable.

To check if a variable is nil, you should directly compare its value to nil without taking its address:

if x == nil {
    // Code block
}

This is the correct and idiomatic way to check if a variable is nil in Go.

By avoiding the usage of &x == nil and using x == nil instead, you can write cleaner and more accurate code that adheres to Go’s best practices.

Non-Compliant Code Examples

func main() {
    if &myVar == nil {

    }
}

Compliant Code Examples

func main() {
    var ptr *int = &myVar
    if ptr == nil {

    }
}
https://static.datadoghq.com/static/images/logos/github_avatar.svg https://static.datadoghq.com/static/images/logos/vscode_avatar.svg jetbrains

Seamless integrations. Try Datadog Code Analysis