Skip to content
Novus Examples
go830 B

Go — Worker pool (goroutines, channels)

A realistic Go program: a worker pool with structs and methods, goroutines, buffered channels, and a sync.WaitGroup — tab-indented like gofmt, for testing highlighters, go vet, and parsers.

Preview — first 50 linesgo
// A worker pool in Go: structs with methods, goroutines, channels,
// and a WaitGroup.
package main

import (
	"fmt"
	"sync"
)

type Job struct {
	ID   int
	Data int
}

type Result struct {
	JobID  int
	Output int
}

func worker(jobs <-chan Job, results chan<- Result, wg *sync.WaitGroup) {
	defer wg.Done()
	for job := range jobs {
		results <- Result{JobID: job.ID, Output: job.Data * job.Data}
	}
}

func main() {
	const workers = 3
	jobs := make(chan Job, 8)
	results := make(chan Result, 8)

	var wg sync.WaitGroup
	for i := 0; i < workers; i++ {
		wg.Add(1)
		go worker(jobs, results, &wg)
	}

	for i := 1; i <= 8; i++ {
		jobs <- Job{ID: i, Data: i}
	}
	close(jobs)

	go func() {
		wg.Wait()
		close(results)
	}()

	total := 0
	for r := range results {
		total += r.Output
54 lines total — download for the full file.

Specifications

Language
Go
Kind
realistic snippet
Lines
53
Encoding
UTF-8
Line Endings
LF

Testing contract

Expected to pass
Scenario
Build the file, run it, and run it again with `-race`.
Expected result
It prints `sum of squares = 204` (the squares of 1 through 8) and the race detector reports no data races: three worker goroutines drain a buffered job channel, a WaitGroup closes the results channel exactly once, and the main goroutine ranges over results until close. gofmt reports no changes.

What is a .go file?

Go (.go) is a plain-text source file for the Go programming language — a statically typed, compiled language from Google designed for simplicity and concurrency. It features goroutines and channels, a fast compiler, garbage collection, structs with methods, and interfaces, with a strict standard formatting.

How to use this file

Use an example .go file to test syntax highlighters, the Go compiler and vet, gofmt, linters, and parser or language-detection tooling.

How to use this file for testing

“Go — Worker pool (goroutines, channels)” is a deterministic Novus Examples fixture for Syntax highlighting, Code parsing, Editor testing. Idiomatic hello-world programs and realistic snippets across sixteen languages, exercising comments, string escapes, interpolation, numeric literals, and language keywords — for testing syntax highlighters, editor themes, and tree-sitter grammars.

Documented properties for this file: Go · UTF-8 · LF. Compare results against paired or grouped companions on this page when present (clean↔damaged, searchable↔scanned, or format twins) so scores stay reproducible across runs.

Download the file once, keep the path stable in CI or local scripts, and treat the spec table as the contract: dimensions, seeds, field lists, and roles are intentional. Corrupt or invalid samples are labelled as such — expect parsers to fail loudly rather than silently accept them.

This is a short, known-correct source file. Run it through your syntax highlighter, linter, formatter, tree-sitter grammar, or parser, and open it in the in-browser editor to tweak and re-download. Each snippet exercises comments, string escapes, literals, and language keywords.

Code examples

go run worker-pool.go

Generated by generation/code_samples.py. Free for any use, no attribution required — license.