go-functions

Use when organizing functions within a Go file, formatting function signatures, designing return values, or following Printf-style naming conventions. Also use…

INSTALLATION
npx skills add https://github.com/cxuu/golang-skills --skill go-functions
Run in your project or agent environment. Adjust flags if your CLI version differs.

SKILL.md

$27

func newSomething() *something { return &something{} }

func (s *something) Cost() int { return calcCost(s.weights) }

func (s *something) Stop() { ... }

func calcCost(n []int) int { ... }

---

## Function Signatures

> Read [references/SIGNATURES.md](references/SIGNATURES.md) when formatting multi-line signatures, wrapping return values, shortening call sites, or replacing naked bool parameters with custom types.

Keep the signature on a single line when possible. When it must wrap, put **all

arguments on their own lines** with a trailing comma:

func (r *SomeType) SomeLongFunctionName(

foo1, foo2, foo3 string,

foo4, foo5, foo6 int,

) {

foo7 := bar(foo1)

}


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.

// Bad: pointer to interface

func process(r *io.Reader) { ... }

// Good: pass the interface value

func process(r io.Reader) { ... }


## Printf and Stringer

Read [references/PRINTF-STRINGER.md](https://github.com/cxuu/golang-skills/blob/HEAD/skills/go-functions/references/PRINTF-STRINGER.md) when using Printf verbs beyond %v/%s/%d, implementing fmt.Stringer or fmt.GoStringer, writing custom Format() methods, or debugging infinite recursion in String() methods.

### 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:

return fmt.Errorf("unknown key %q", key) // produces: unknown key "foo\nbar"

BrowserAct

Let your agent run on any real-world website

Bypass CAPTCHA & anti-bot for free. Start local, scale to cloud.

Explore BrowserAct Skills →

Stop writing automation&scrapers

Install the CLI. Run your first Skill in 30 seconds. Scale when you're ready.

Start free
free · no credit card