You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
jolheiser b985c9ff0b
Initial commit
11 months ago
.gitignore Initial commit 11 months ago
LICENSE Initial commit 11 months ago
README.md Initial commit 11 months ago
go.mod Initial commit 11 months ago
go.sum Initial commit 11 months ago
opt.go Initial commit 11 months ago
opt_example_test.go Initial commit 11 months ago
opt_test.go Initial commit 11 months ago

README.md

opt

opt is a tiny package that reduces boilerplate for functional options.

Simply decide whether your options can return errors or not, then use the corresponding type.

Without errors:

type Foo struct {
	Bar string
}

func WithBar(b string) opt.Func[Foo] {
	return func(f *Foo) {
		f.Bar = b
    }
}

With errors:

type Foo struct {
	Bar string
}

func WithBar(b string) opt.ErrorFunc[Foo] {
	return func(f *Foo) error  {
		f.Bar = b
		return nil
    }
}

License

MIT

Credit to @segfaultax in the Discord Gophers server for the idea and starting implementation.