JSONB хранится в бинарном виде, поддерживает индексы (GIN), операторы @>, ?, jsonb_path_query. В Go сканируют в []byte и json.Unmarshal или в тип с datatype (pgx). Запросы с условиями по полям JSON: WHERE data @> $1, передают JSON. Для сложной логики используют сырой SQL с функциями jsonb_*.
var data []byte
err := db.QueryRowContext(ctx, "SELECT data FROM events WHERE data @> $1", "{\"type\":\"click\"}").Scan(&data)