Skip to content

ckaznocha/intrange

Repository files navigation

intrange

Build Status Release GoDoc

intrange is a program for checking for loops that could use the Go 1.22 integer range feature.

Installation

go install github.com/ckaznocha/intrange/cmd/intrange@latest

Usage

go vet -vettool=$(which intrange) ./...

Examples

A loop that uses the value of the loop variable

package main

import "fmt"

func main() {
    for i := 0; i < 10; i++ {
        fmt.Println(i)
    }
}

Running intrange on the above code will produce the following output:

main.go:5:2: for loop can be changed to use an integer range (Go 1.22+)

The loop can be rewritten as:

package main

import "fmt"

func main() {
    for i := range 10 {
        fmt.Println(i)
    }
}

A loop that does not use the value of the loop variable

package main

import "fmt"

func main() {
    for i := 0; i < 10; i++ {
        fmt.Println("Hello again!")
    }
}

Running intrange on the above code will produce the following output:

main.go:5:2: for loop can be changed to use an integer range (Go 1.22+)

The loop can be rewritten as:

package main

import "fmt"

func main() {
    for range 10 {
        fmt.Println("Hello again!")
    }
}