You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This package provides nullable Go types for bool, float64, int64, int32, string and time.Time replacing sql.NullString, sql.NullInt64, ... that can be marshalled/unmarshalled to/from JSON.
Installation
To install "null", run go get within your project:
go get github.com/emvi/null
Note that from 1.3 on "null" requires Go version 1.13 or newer.
Usage
Here is a short example demonstrating the string type. The other types (int64, float64 and bool) work in the same manner.
package main
import (
"encoding/json"
"database/sql"
"fmt"
"github.com/emvi/null"
)
type NullableString struct {
Value null.String `json:"value"`
}
func main() {
str := NullableString{null.NewString("nullable string", true)}
// or long version: str := NullableString{null.String{sql.NullString{String: "nullable string", Valid: true}}}
data, _ := json.Marshal(str)
fmt.Println(string(data)) // -> {"value": "nullable"}
str.SetNil() // use str.SetValid("value") to set a value again
data, _ = json.Marshal(str)
fmt.Println(string(data)) // -> {"value": null}
}