Skip to content

Prefer slices.Clip Has Fix

Description

slices.Clip limits a slice's capacity to its length. It is the readable standard-library equivalent of the full slice expression s[:len(s):len(s)].

This helper requires Go 1.21 or newer. The fix assumes the standard-library slices package is available under its usual name; add the import if needed.

YAML

yaml
id: slices-clip
language: Go
rule:
  pattern:
    context: func f() { $SLICE = $SLICE[:len($SLICE):len($SLICE)] }
    selector: assignment_statement
constraints:
  SLICE:
    kind: identifier
fix: $SLICE = slices.Clip($SLICE)

Example

go
import "slices"

func releaseCapacity(items []string) {
	items = items[:len(items):len(items)]
	use(items)
}

Diff

go
import "slices"

func releaseCapacity(items []string) {
	items = items[:len(items):len(items)] 
	items = slices.Clip(items) 
	use(items)
}

Credits

Based on JetBrains' Go Modern Guidelines.

Made with ❤️ with Rust