Basic types, integers, floats, string, bool, time.Time, net.IP, net.IPNet. All struct fields are nullable by default and zero values (empty string, 0, zero time, empty map or slice, nil ptr) are marshalled as SQL NULL. pg:",notnull" is used to add SQL NOT NULL constraint and pg:",use_zero" to allow Go zero values. sql.NullBool, sql.NullString, sql.NullInt64, sql.NullFloat64 and pg.NullTime. Structs, maps and arrays are marshalled as JSON by default. PostgreSQL multidimensional Arrays using array tag and Array wrapper. Hstore using hstore tag and Hstore wrapper. go-pg supports 2 last Go versions and requires support for Go modules. So make sure to initialize a Go module. ORM supports has one, belongs to, has many, and many to many with composite/multi-column primary keys. ForEach that calls a function for each row returned by the query without loading all rows into the memory.