content/blog/pipelines: fix explicit cancellation example

The output goroutine in merge had an empty <-done case body, so
receiving a cancellation signal would silently fall through to the
next iteration of the for-range loop. The goroutine kept trying to
forward values from c instead of exiting, leaving senders blocked
when only one done value was available.

Add a labeled break so receiving from done exits both the select
and the outer for, mirroring the return statement used in the close
example (sqdone3.go).

Also bump gen(2, 3) to gen(2, 3, 5) so the counting cancellation
example actually exercises both done sends. With only two inputs,
at most one sender ends up blocked, and the second cancellation is
unused.

Fixes golang/go#78277

Change-Id: I212bdb41e1337da26e8559bf1b676980b57de5a0
Reviewed-on: https://go-review.googlesource.com/c/website/+/765660
Reviewed-by: Sean Liao <sean@liao.dev>
Reviewed-by: David Chase <drchase@google.com>
Reviewed-by: Mark Freeman <markfreeman@google.com>
Auto-Submit: Sean Liao <sean@liao.dev>
LUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
1 file changed
tree: 30196ba67f5ba1613cd23cb2db13e6cc7b60fbf2
  1. _content/
  2. cmd/
  3. internal/
  4. tour/
  5. .eslintrc.yaml
  6. .gitattributes
  7. .prettierrc.yaml
  8. .stylelintrc.yaml
  9. codereview.cfg
  10. content.go
  11. content_test.go
  12. CONTRIBUTING.md
  13. go-app-deploy.sh
  14. go.mod
  15. go.sum
  16. jest-transform.cjs
  17. LICENSE
  18. npm
  19. npx
  20. package-lock.json
  21. package.json
  22. PATENTS
  23. README.md
  24. tsconfig.json
README.md

Go website

Go Reference

This repo holds content and serving programs for the go.dev and golang.org web sites.

Content is in _content/ (go.dev) and tour/ (go.dev/tour). Server code is in cmd/ and internal/.

To run the combined go.dev+golang.org server to preview local content changes, use:

go run ./cmd/golangorg

The supporting programs cmd/admingolangorg and cmd/googlegolangorg are the servers for admin.golang.org and google.golang.org. (They do not use the _content/ directories.)

Each command directory has its own README.md explaining deployment.

JS/TS/CSS Formatting

This repository uses eslint to format JS and TS files, and stylelint to format CSS files.

See also:

It is encouraged that all JS, TS, and CSS code be run through formatters before submitting a change. However, it is not a strict requirement enforced by CI.

Installing npm Dependencies:

  1. Install docker
  2. Create a .gitignore file at repo root
  3. Add .gitignore and node_modules to .gitignore
  4. Run ./npm install

Run ESlint

./npx eslint [options] [file] [dir]

Run Stylelint

./npx stylelint [input] [options]

TypeScript Support

TypeScript files served from _content are transformed into JavaScript. Reference .ts files in html templates as module code.

<script type="module" src="/ts/filename.ts">

Write unit tests for TypeScript code using the jest testing framework.

Run Jest

./npx jest [TestPathPattern]

Deploying

Each time a CL is reviewed and submitted, the code is deployed to App Engine. See cmd/golangorg/README.md for details.

Report Issues / Send Patches

This repository uses Gerrit for code changes. To learn how to submit changes to this repository, see https://go.dev/doc/contribute.

The git repository is https://go.googlesource.com/website.

The main issue tracker for the website repository is located at https://go.dev/issues. Prefix your issue with “x/website:” in the subject line, so it is easy to find.