package main import "fmt" func IDGen(startNum int) func() <-chan int { ch := make(chan int) i := startNum go func() { for { ch <- i i++ } }() return func() <-chan int { return ch } } func main() { idGen := IDGen(1) fmt.Println(<-idGen()) fmt.Println(<-idGen()) fmt.Println(<-idGen()) }

솔직히 예전에 인터넷에서 보고 써먹는 중. 보고 이해하는 건 쉬운데, 스스로 이런 아이디어는 안 떠오른다. 머리가 빠가.............