В принципе, ==
сравнивает, если два объекта имеют одну и ту же ссылку в куче, поэтому, если две ссылки не связаны с одним и тем же объектом, это сравнение будет ложным.
equals()
- метод унаследованный от класса Object
. Этот метод по умолчанию сравнивает, если два объекта имеют одинаковое рефери. Это означает:
object1.equals(object2)
& lt; => object1 == object2
Однако, если вы хотите установить равенство между двумя объектами того же класса, вы должны переопределить этот метод. Также очень важно переопределить метод hashCode()
, если вы переопределили equals()
.
Реализация hashCode()
при установлении равенства является частью Контракта объектов Java. Если вы работаете с коллекциями, а вы не реализовали hashCode()
, могут возникнуть Strange Bad Things:
HashMap<Cat, String> cats = new HashMap<>();
Cat cat = new Cat("molly");
cats.put(cat, "This is a cool cat");
System.out.println(cats.get(new Cat("molly"));
null
будет напечатано после выполнения предыдущего кода, если вы еще не реализовали hashCode()
.
Вот базовый пример практически всего, что вам нужно, чтобы вставить некоторые простые данные
в базу данных PostgreSQL через gorm .
main.go
blockquote>package main import ( "log" "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/postgres" // Don't forget the dialect ) // Simple Example model type FuelType struct { gorm.Model // Gorm default columns (id, created_at, updated_at, deleted_at) Name string } func main() { // Database initialization db, err := gorm.Open( "postgres", "host=localhost port=5432 user=postgres dbname=foo password=bar sslmode=disable", ) if err != nil { log.Fatalln("Can't connect to the db: ", err) } defer func() { if err := db.Close(); err != nil { log.Fatalln("Can't close the db connection: ", err) } }() // Migration db.AutoMigrate(&FuelType{}) // Insertion fuelType := FuelType{Name: "100 GFuel"} db.Create(&fuelType) }