diff --git a/dns/dnsmessage/message.go b/dns/dnsmessage/message.go index a656efc128..64df432ba5 100644 --- a/dns/dnsmessage/message.go +++ b/dns/dnsmessage/message.go @@ -197,7 +197,7 @@ const hexDigits = "0123456789abcdef" func printString(str []byte) string { buf := make([]byte, 0, len(str)) - for i := 0; i < len(str); i++ { + for i := range len(str) { c := str[i] if c == '.' || c == '-' || c == ' ' || 'A' <= c && c <= 'Z' || diff --git a/dns/dnsmessage/message_test.go b/dns/dnsmessage/message_test.go index 1fa93e63ad..00891a457a 100644 --- a/dns/dnsmessage/message_test.go +++ b/dns/dnsmessage/message_test.go @@ -1279,7 +1279,7 @@ func BenchmarkParsing(b *testing.B) { } b.ReportAllocs() - for i := 0; i < b.N; i++ { + for range b.N { benchmarkParsing(b, buf) } } @@ -1422,7 +1422,7 @@ func BenchmarkPack(b *testing.B) { b.ReportAllocs() - for i := 0; i < b.N; i++ { + for range b.N { if _, err := msg.Pack(); err != nil { b.Fatal("Message.Pack() =", err) } @@ -1435,7 +1435,7 @@ func BenchmarkAppendPack(b *testing.B) { b.ReportAllocs() - for i := 0; i < b.N; i++ { + for range b.N { if _, err := msg.AppendPack(buf[:0]); err != nil { b.Fatal("Message.AppendPack() = ", err) } diff --git a/http/httpguts/httplex.go b/http/httpguts/httplex.go index 9b4de94019..092cc0cb2d 100644 --- a/http/httpguts/httplex.go +++ b/http/httpguts/httplex.go @@ -197,7 +197,7 @@ func ValidHeaderFieldName(v string) bool { if len(v) == 0 { return false } - for i := 0; i < len(v); i++ { + for i := range len(v) { if !isTokenTable[v[i]] { return false } @@ -218,7 +218,7 @@ func ValidHostHeader(h string) bool { // But we're going to be much more lenient for now and just // search for any byte that's not a valid byte in any of those // expressions. - for i := 0; i < len(h); i++ { + for i := range len(h) { if !validHostByte[h[i]] { return false } @@ -301,7 +301,7 @@ var validHostByte = [256]bool{ // This function does not (yet?) properly handle the rejection of // strings that begin or end with SP or HTAB. func ValidHeaderFieldValue(v string) bool { - for i := 0; i < len(v); i++ { + for i := range len(v) { b := v[i] if isCTL(b) && !isLWS(b) { return false @@ -311,7 +311,7 @@ func ValidHeaderFieldValue(v string) bool { } func isASCII(s string) bool { - for i := 0; i < len(s); i++ { + for i := range len(s) { if s[i] >= utf8.RuneSelf { return false } diff --git a/http/httpguts/httplex_test.go b/http/httpguts/httplex_test.go index 791440b1a7..dee81d3da4 100644 --- a/http/httpguts/httplex_test.go +++ b/http/httpguts/httplex_test.go @@ -31,7 +31,7 @@ func TestIsTokenRune(t *testing.T) { } func BenchmarkIsTokenRune(b *testing.B) { - for i := 0; i < b.N; i++ { + for range b.N { var r rune for ; r < 1024; r++ { IsTokenRune(r) @@ -140,7 +140,7 @@ func BenchmarkValidHeaderFieldName(b *testing.B) { } b.ReportAllocs() b.ResetTimer() - for i := 0; i < b.N; i++ { + for range b.N { for _, name := range names { ValidHeaderFieldName(name) } diff --git a/http/httpproxy/proxy.go b/http/httpproxy/proxy.go index d89c257ae7..3cb855a894 100644 --- a/http/httpproxy/proxy.go +++ b/http/httpproxy/proxy.go @@ -313,7 +313,7 @@ func idnaASCII(v string) (string, error) { } func isASCII(s string) bool { - for i := 0; i < len(s); i++ { + for i := range len(s) { if s[i] >= utf8.RuneSelf { return false } diff --git a/http/httpproxy/proxy_test.go b/http/httpproxy/proxy_test.go index a1dd2e83fd..06a5be4c10 100644 --- a/http/httpproxy/proxy_test.go +++ b/http/httpproxy/proxy_test.go @@ -394,7 +394,7 @@ func BenchmarkProxyForURL(b *testing.B) { } proxyFunc := cfg.ProxyFunc() b.Run(test.host, func(b *testing.B) { - for n := 0; n < b.N; n++ { + for range b.N { if au, e := proxyFunc(u); e != nil && test.match == (au != nil) { b.Errorf("useProxy(%v) = %v, want %v", test.host, !test.match, test.match) } diff --git a/http2/ascii.go b/http2/ascii.go index 17caa20586..05483db7ee 100644 --- a/http2/ascii.go +++ b/http2/ascii.go @@ -16,7 +16,7 @@ func asciiEqualFold(s, t string) bool { if len(s) != len(t) { return false } - for i := 0; i < len(s); i++ { + for i := range len(s) { if lower(s[i]) != lower(t[i]) { return false } @@ -35,7 +35,7 @@ func lower(b byte) byte { // isASCIIPrint returns whether s is ASCII and printable according to // https://tools.ietf.org/html/rfc20#section-4.2. func isASCIIPrint(s string) bool { - for i := 0; i < len(s); i++ { + for i := range len(s) { if s[i] < ' ' || s[i] > '~' { return false } diff --git a/http2/frame.go b/http2/frame.go index e6f728c261..2aff1ae21f 100644 --- a/http2/frame.go +++ b/http2/frame.go @@ -771,7 +771,7 @@ func (f *SettingsFrame) IsAck() bool { func (f *SettingsFrame) Value(id SettingID) (v uint32, ok bool) { f.checkValid() - for i := 0; i < f.NumSettings(); i++ { + for i := range f.NumSettings() { if s := f.Setting(i); s.ID == id { return s.Val, true } @@ -800,7 +800,7 @@ func (f *SettingsFrame) HasDuplicates() bool { // If it's small enough (the common case), just do the n^2 // thing and avoid a map allocation. if num < 10 { - for i := 0; i < num; i++ { + for i := range num { idi := f.Setting(i).ID for j := i + 1; j < num; j++ { idj := f.Setting(j).ID @@ -812,7 +812,7 @@ func (f *SettingsFrame) HasDuplicates() bool { return false } seen := map[SettingID]bool{} - for i := 0; i < num; i++ { + for i := range num { id := f.Setting(i).ID if seen[id] { return true @@ -826,7 +826,7 @@ func (f *SettingsFrame) HasDuplicates() bool { // It stops and returns the first error. func (f *SettingsFrame) ForeachSetting(fn func(Setting) error) error { f.checkValid() - for i := 0; i < f.NumSettings(); i++ { + for i := range f.NumSettings() { if err := fn(f.Setting(i)); err != nil { return err } diff --git a/http2/frame_test.go b/http2/frame_test.go index 68505317e1..1a8c2e541b 100644 --- a/http2/frame_test.go +++ b/http2/frame_test.go @@ -985,7 +985,7 @@ func TestMetaFrameHeader(t *testing.T) { w: func(f *Framer) { var he hpackEncoder var pairs = []string{":method", "GET", ":path", "/"} - for i := 0; i < 100; i++ { + for range 100 { pairs = append(pairs, "foo", "bar") } all := he.encodeHeaderRaw(t, pairs...) @@ -1129,21 +1129,21 @@ func TestSetReuseFrames(t *testing.T) { // SetReuseFrames only currently implements reuse of DataFrames. firstDf := readAndVerifyDataFrame("ABC", 3, fr, buf, t) - for i := 0; i < 10; i++ { + for range 10 { df := readAndVerifyDataFrame("XYZ", 3, fr, buf, t) if df != firstDf { t.Errorf("Expected Framer to return references to the same DataFrame. Have %v and %v", &df, &firstDf) } } - for i := 0; i < 10; i++ { + for range 10 { df := readAndVerifyDataFrame("", 0, fr, buf, t) if df != firstDf { t.Errorf("Expected Framer to return references to the same DataFrame. Have %v and %v", &df, &firstDf) } } - for i := 0; i < 10; i++ { + for range 10 { df := readAndVerifyDataFrame("HHH", 3, fr, buf, t) if df != firstDf { t.Errorf("Expected Framer to return references to the same DataFrame. Have %v and %v", &df, &firstDf) @@ -1158,7 +1158,7 @@ func TestSetReuseFramesMoreThanOnce(t *testing.T) { firstDf := readAndVerifyDataFrame("ABC", 3, fr, buf, t) fr.SetReuseFrames() - for i := 0; i < 10; i++ { + for range 10 { df := readAndVerifyDataFrame("XYZ", 3, fr, buf, t) // SetReuseFrames should be idempotent fr.SetReuseFrames() diff --git a/http2/gotrack.go b/http2/gotrack.go index 9933c9f8c7..bd4f591306 100644 --- a/http2/gotrack.go +++ b/http2/gotrack.go @@ -116,7 +116,7 @@ func parseUintBytes(s []byte, base int, bitSize int) (n uint64, err error) { cutoff = cutoff64(base) maxVal = 1<