go-functions
Use when organizing functions within a Go file, formatting function signatures, designing return values, or following Printf-style naming conventions. Also use when a user is adding or refactoring any Go function, even if they don't mention function design or signature formatting. Does not cover fun
By cxuu · 868 installs
npx skills add cxuu/golang-skills --skill go-functions
Source repository · Upstream listing
Go Function Design
Resource Routing
references/SIGNATURES.md Read when designing parameters, return values, named results, or signature readability.
references/PRINTF STRINGER.md Read when using fmt verbs, Stringer, GoStringer, Formatter, or Printf style function naming.
When this skill does NOT apply : For functional options constructors ( WithTimeout , WithLogger ), see [go functional options](../go functional options/SKILL.md). For error return conventions, see [go error handling](../go error handling/SKILL.md). For naming functions and methods, see [go naming](../go naming/SKILL.md).
Function Grouping and Ordering
Organize functions in a file by these rules:
1. Functions sorted in rough call order
2. Functions grouped by receiver
3. Exported functions appear first, after struct / const / var definitions
4. NewXxx / newXxx constructors appear right after the type definition
5. Plain utility functions appear toward the end of the file
Function Signatures
Keep the signature on a single line when possible. When it must wrap, put all
arguments on their own lines with a trailing comma:
Add / name / comments for ambiguous arguments, or better yet, replace naked
bool parameters with custom types.
Pointers to Interfaces
You almost never need a pointer to an interface. Pass interfaces as values — the
underlying data can still be a pointer.
Printf and Stringer
Printf style Function Names
Functions that accept a format string should end in f for go vet support.
Declare format strings as const when used outside Printf calls.
Prefer %q over %s with manual quoting when formatting strings for logging
or error messages — it safely escapes special characters and wraps in quotes:
See go functional options when designing a constructor with 3+ optional
parameters.
Quick Reference
Topic Rule
File ordering Type constructor exported unexported utils
Signature wrapping All args on own lines with trailing comma
Naked parameters Add / name / comments or use custom types
Pointers to interfaces Almost never needed; pass interfaces by value
Printf function names End with f for go vet support
Related Skills
Error returns : See [go error handling](../go error handling/SKILL.md) when designing error return patterns or wrapping errors in multi return functions
Naming conventions : See [go naming](../go naming/SKILL.md) when naming functions, methods, or choosing getter/setter patterns
Functional options : See [go functional options](../go functional options/SKILL.md) when designing a constructor with 3+ optional parameters
Formatting principles : See [go style core](../go style core/SKILL.md) when deciding line length, naked returns, or signature formatting