From 6e2904c8cf6fe76a2975b7d4cd18958d00804de7 Mon Sep 17 00:00:00 2001 From: chaoyuepan Date: Fri, 14 Jun 2024 15:30:42 +0800 Subject: [PATCH] add the critical style: the range-over-func is critical, as some gophers argue that it deviates from Go's simplity design goal --- README.md | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/README.md b/README.md index ccdb013..5093257 100644 --- a/README.md +++ b/README.md @@ -207,6 +207,35 @@ func Factorial(n int) int { } ``` +## Guru Go Programmer + +```go +package fac + +import "iter" + +// Factorial returns n!. +func Factorial(n int) int { + res := 1 + + for i := range factorial(n) { + res *= i + } + + return res +} + +func factorial(n int) iter.Seq[int] { + return func(yield func(int) bool) { + for i := range n { + if !yield(i + 1) { + break + } + } + } +} +``` + ## Rob Pike ```text