Skip to content

v0.2.0 — OrNull constructors

Choose a tag to compare

@kolkov kolkov released this 04 Jul 17:42
0f3d14f

OrNull — zero value → null mapping

New constructors that treat zero values as "not set" → null. Eliminates boilerplate helpers in DB/API projects.

Added

  • Generic OrNull[T]opt.OrNull(0) → null, opt.OrNull(42) → valid
  • Typed constructorsStringOrNull, IntOrNull, Int32OrNull, Int16OrNull, FloatOrNull, BoolOrNull, ByteOrNull, TimeOrNull

Usage

// Before (boilerplate in every project)
func optStr(s string) opt.String {
    return opt.NewString(s, s != "")
}
row.City = optStr(c.City())

// After (library API)
row.City = opt.StringOrNull(c.City())

Constructor Guide

Constructor Semantics
From(v) Always valid — zero IS a value
OrNull(v) Zero → null — zero means "not set"
FromPtr(p) nil → null
New(v, valid) Manual control

Install

go get github.com/coregx/opt@v0.2.0

Full docs: README | pkg.go.dev