File: iter.go

package info (click to toggle)
golang-github-bradfitz-iter 0.0~git20190303.33e6a98-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 60 kB
  • sloc: makefile: 2
file content (30 lines) | stat: -rw-r--r-- 1,033 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// Copyright 2014 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// Package iter provides a syntactically different way to iterate over
// integers. That's it.
//
// This package was intended to be an educational joke when it was
// released in in 2014. People didn't get the joke part and started
// depending on it. That's fine, I guess. (This is the Internet.) But
// it's kinda weird. It's one line, and not even idiomatic Go style. I
// encourage you not to depend on this or write code like this, but I
// do encourage you to read the code and think about the
// representation of Go slices and why it doesn't allocate.
package iter

// N returns a slice of n 0-sized elements, suitable for ranging over.
//
// For example:
//
//    for i := range iter.N(10) {
//        fmt.Println(i)
//    }
//
// ... will print 0 to 9, inclusive.
//
// It does not cause any allocations.
func N(n int) []struct{} {
	return make([]struct{}, n)
}