Hm. For me, it still enables the rangefunc experiment, even though go.mod says go 1.21:
mero@vetinari ~/tmp/x$ gotip version
go version devel go1.21-ca691a8566d Tue Jul 18 10:30:20 2023 -0400 (w/ rangefunc) linux/amd64
mero@vetinari ~/tmp/x$ cat go.mod
module x
go 1.21
mero@vetinari ~/tmp/x$ cat x.go
package main
import "fmt"
func main() {
s := []int{1, 2, 3}
for v := range All(s) {
fmt.Println(v)
}
}
func All[T any](s []T) func(yield func(T) bool) bool {
return func(yield func(T) bool) bool {
for _, v := range s {
if !yield(v) {
return false
}
}
return true
}
}
mero@vetinari ~/tmp/x$ gotip run x.go
1
2
3