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

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.

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