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
3 months ago
.gitignore Initial commit 3 months ago
LICENSE Initial commit 3 months ago
README.md Initial commit 3 months ago
go.mod Initial commit 3 months ago
go.sum Initial commit 3 months ago
opt.go Initial commit 3 months ago
opt_example_test.go Initial commit 3 months ago
opt_test.go Initial commit 3 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.