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.